AnyChat技术支持论坛

标题: Android手机端运行时,不该频繁GC [打印本页]

作者: 张义强    时间: 2013-12-20 12:05
标题: Android手机端运行时,不该频繁GC
我们公司在用你们的Anychat平台尝试开发软件。

在eclipse里运行你们手机端程序时看到差不多每秒执行两次GC。每次执行大约消耗几十个毫秒。也就是说接近10%的cpu用来回收内存了。

我使用java有15年了,对gc研究过一段时间。我个人的理解是java的gc一般不需要显式地调用,jre内部有比较完善的触发执行的机制。对内存比较紧张的手机,如果需要显式调用,最好安排在程序空闲时,另外完全没必要频繁调用和执行。累积到一定时候,强制执行一次立即生效的内存回收指令就够了。总体执行效率上会高很多。我们过去开发的java软件,也是这么做的。

比如,反复执行了100次gc,每次消耗50毫秒,总体上是耗费了5000毫秒,如果累积到一起执行gc,应该几百毫秒就能执行完。

如果有可能,希望有机会能与你们开发人员交流一下。

我qq:993237021

作者: admin    时间: 2013-12-20 12:13
您好,您可以这样设置一下,应该能明显的改善这个问题:使用标准示例程序,在登录成功进入大厅之后,点击“设置”按钮,将里面的4个驱动设置项由“Java驱动模式”修改为“内核驱动模式”,然后重启应用。
作者: admin    时间: 2013-12-20 22:15
您好,请替换一下附件中的.so库和.java文件,看默认的“Java驱动模式”下,是否还存在GC内存回收的问题。

newlibs.rar

758.73 KB, 下载次数: 6


作者: 张义强    时间: 2013-12-24 11:38
改善了一些,现在大约15-30秒执行一次GC,每次耗时大约30~80ms。
作者: admin    时间: 2013-12-25 16:25
这个版本有进一步的优化,您可以测试看看:http://bbs.anychat.cn/forum.php? ... &extra=page%3D1
作者: admin    时间: 2014-1-2 10:44
您好,最新发布的版本已对该问题进行了优化,请更新SDK:http://bbs.anychat.cn/forum.php? ... &extra=page%3D1




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3