我想测试android应用程序的内存性能,我想自动获取内存信息。我使用'adb shell dumpsys meminfo...‘定期获取内存信息。现在,我想观察内存泄漏,如何执行gc?就像DDMS中的“原因GC”一样。谢谢!
发布于 2014-08-20 14:17:52
DDMS调试器通过套接字连接到Dalvik VM。为了响应“起因GC”命令,它发送一个"HPGC“数据包(即HeaP GC),最终在core/java/android/ddm/DdmHandleHeap.java类的handleHPGC()方法中结束。
handleHPGC()方法只是调用java.lang.Runtime.getRuntime().gc()方法。
我认为您可以使用Java Debug Wire Protocol (JDWP)编写一个简单的(?)程序,该程序将附加到您正在测试的应用程序的调试端口,并使用该API调用垃圾收集器。
作为Java docs say for java.lang.Runtime.gc()
System.gc()方法是调用此方法的常规且方便的方法。
发布于 2019-08-04 01:59:44
在android studio中,您可以使用Profiler工具。只需在分析器上添加您的应用程序会话,然后单击Memory sections。然后按标题上的强制GC按钮(用回收站图标表示)

发布于 2014-08-20 13:44:02
DDMS中原因GC的定义为:-
在“堆”选项卡上,单击“引起GC调用垃圾收集”,这将启用堆数据的收集。操作完成后,您将看到一组对象类型以及为每种类型分配的内存。您可以再次单击原因GC以刷新数据。
这就是所谓的GC_EXPLICIT
使用Debug.dumpHprofData(字符串)生成堆转储。
将"hprof“数据转储到指定文件。这可能会导致GC。
https://stackoverflow.com/questions/25396276
复制相似问题