Google Maps v2会明确调用System.gc()吗?或者如何找到对System.gc()的调用?

时间:2014-03-12 11:14:56

标签: android garbage-collection google-maps-android-api-2

我正在使用Google Maps v2 Android

我需要在地图的标记上显示一些View,所以我每16ms更新一次位置以保持60fps。

我遇到了该代码的问题:

Point targetPosition = getMap().getProjection()
    .toScreenLocation(mTrackingMarkerPos);

因为它似乎导致显式调用System.gc()Runtime.getRuntime().gc()

所以我在日志输出中得到了这个:

03-12 15:00:24.362  19135-19135/my_fake_package_name D/dalvikvm﹕ GC_EXPLICIT freed 122K, 10% free 12710K/14116K, paused 11ms+11ms, total 115ms
03-12 15:00:25.583  19135-19135/my_fake_package_name D/dalvikvm﹕ GC_EXPLICIT freed 123K, 10% free 12711K/14116K, paused 7ms+4ms, total 100ms
03-12 15:00:26.845  19135-19135/my_fake_package_name D/dalvikvm﹕ GC_EXPLICIT freed 123K, 10% free 12711K/14116K, paused 11ms+6ms, total 104ms
03-12 15:00:28.056  19135-19135/my_fake_package_name D/dalvikvm﹕ GC_EXPLICIT freed 217K, 10% free 12710K/14116K, paused 11ms+5ms, total 98ms
03-12 15:00:29.287  19135-19135/my_fake_package_name D/dalvikvm﹕ GC_EXPLICIT freed 121K, 10% free 12712K/14116K, paused 11ms+7ms, total 112ms
03-12 15:00:30.499  19135-19135/my_fake_package_name D/dalvikvm﹕ GC_EXPLICIT freed 123K, 10% free 12712K/14116K, paused 7ms+4ms, total 87ms
03-12 15:00:31.760  19135-19135/my_fake_package_name D/dalvikvm﹕ GC_EXPLICIT freed 126K, 10% free 12711K/14116K, paused 7ms+4ms, total 130ms

正如您所看到的,GC_EXPLICIT可以暂停我的应用程序大约100毫秒!

因为谷歌地图v2,我的方法是保持60fps无法实现:(

如果我评论该行,GC_EXPLICIT调用将消失。我认为谷歌地图v2中的问题,我检查了他们的.class文件,但我没有找到任何System.gc的电话,所以可能是我错了......

如果您知道如何找到System.gc()的来电,我也很高兴知道这一点,或者谷歌的人可以帮我解决这个问题?

P.S。在gmaps-api问题上询问此问题:https://code.google.com/p/gmaps-api-issues/issues/detail?id=6483&thanks=6483&ts=1394624273

0 个答案:

没有答案