android - 为什么使用 Jacksons ObjectMapper Android 垃圾收集次数如此之多?

标签 android garbage-collection jackson

我的 Android 应用程序有一个自定义的 AsyncTask 来对对象列表进行 rest 调用。我正在使用 Jackson 将我的响应转换为 Java,并且在通过 ObjectMapper.readValue() 映射 Json 时看到大约 30 个垃圾收集调用。有趣的是,如果我第二次、第三次、第四次进行相同的调用(通过选择刷新按钮),则只有一次 GC 调用。知道为什么每次启动我的 Android 应用程序时第一次调用都会发生这种情况吗?

异步任务.java

doInBackground() {

HttpGet request = new HttpGet(url);
HttpClientUtil.setJsonAccept(request);
HttpResponse response = httpClient.execute(request);
HttpEntity responseEntity = new BufferedHttpEntity(response.getEntity());

// Call that garbage collect 30+ times the first exectution
ArrayList<MyObject> responseCollection = mapper.readValue(responseEntity.getContent(), new TypeReference<ArrayList<MyObject>>(){});

return responseCollection;
}

LogCat 输出

07-10 11:05:13.484: D/dalvikvm(5518): GC_CONCURRENT freed 497K, 5% free 14030K/14727K, paused 3ms+4ms
07-10 11:05:13.484: D/dalvikvm(5518): GC_CONCURRENT freed 497K, 5% free 14030K/14727K, paused 3ms+4ms
07-10 11:05:13.484: D/dalvikvm(5518): GC_CONCURRENT freed 497K, 5% free 14030K/14727K, paused 3ms+4ms
...

最佳答案

Android 的GC 总体来说比较激进,跟Jackson 没有必然的关系。更多信息在这里:

Technical details of Android Garbage Collector

关于android - 为什么使用 Jacksons ObjectMapper Android 垃圾收集次数如此之多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11416947/

相关文章:

android - 调用 MobileAds.initialize() 的正确方法是什么?

android - 如何重新测量 layout_weight?

android - getActivity() 在 FragmentActivity : android 中

android - EditText设置背景不透明度

java - JVM G1 survivor 空间容量为0

java - 为什么 JVM 会进行如此多的垃圾回收

java - 最大堆大小 xmx 如何影响 Java 中的内存分配/已用堆?

java - 第三方类的 Jackson JSON 自定义类实例化器

java - 我如何在 Quarkus 中定义用于序列化的聊天集?

java - 无法解析具有属性的空 xml 属性