Android GC行为

时间:2013-03-29 15:08:44

标签: java android garbage-collection android-logcat

我试图理解为什么android GC的行为方式,

  • VM堆设置为512 MB
  • Runtime.getRuntime maxMemory为512 MB
  • Runtime.getRuntime totalMemory为13 MB
  • Runtime.getRuntime freeMemory为3 MB

我总是在这些值的+/- 2-3 MB之内。

我的代码是有用的,所以我使用了很多对象,但我不在512 MB附近,但我经常在我的logcat中看到GC调用,特别是在紧密循环中。为什么不让堆增长?和GC以小的增量而不是每次暂停我的应用程序300毫秒。

有没有办法让我对垃圾收集过程有更多的控制权(这不是一个市场应用程序,我没有安装自定义ROM的问题。)除了股票回答改变你的编码风格没有创造大量的对象,因为我看到一个真正的设备(四1,2 GHz的机器具有2 GB时,没有其他应用程序正在运行,RAM的一个类似的水煤浆是一种恼人的有一台机器这个强大的和不能够以我喜欢的方式编码。)

1 个答案:

答案 0 :(得分:0)

主要问题是应用程序在VM中运行,每个VM都有其限制。只要您不是原生(NDK),您将不得不忍受VM获得的小RAM。

  

我没有安装自定义ROM的问题。

如果您想构建自己的ROM(或搜索具有可配置设置的ROM),请增加每个VM的大小并对其感到满意。

  

我的代码功能齐全所以我使用了很多对象

“使用大量物体”和“使用很多具有极短寿命的物体”之间存在差异。但是你不想听到它......