我试图理解为什么android GC的行为方式,
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的一个类似的水煤浆是一种恼人的有一台机器这个强大的和不能够以我喜欢的方式编码。)
答案 0 :(得分:0)
主要问题是应用程序在VM中运行,每个VM都有其限制。只要您不是原生(NDK),您将不得不忍受VM获得的小RAM。
我没有安装自定义ROM的问题。
如果您想构建自己的ROM(或搜索具有可配置设置的ROM),请增加每个VM的大小并对其感到满意。
我的代码功能齐全所以我使用了很多对象
“使用大量物体”和“使用很多具有极短寿命的物体”之间存在差异。但是你不想听到它......