我使用VisualVM分析我的Java应用程序 我已经完成了
profiling_with_visualvm_part_1
profiling_with_visualvm_part_2
当我看到内存配置文件结果时,我看到数百万Objects[]
,Char[]
,String
和其他此类基本对象已创建,这些对象占用了所有内存。 我想知道哪些类(或我的代码)实际上负责创建 Objects[]
和String
等,到目前为止我找不到它。一旦我知道了罪魁祸首,我就可以深入研究代码并修复它。
我放了一个过滤器com.mypackage.*
,但是我发现它们比Objects[]
,Char[]
,String
的总大小要小许多倍(有时是0字节)对象。
我相信,应该有办法找到罪魁祸首的代码。否则,分析器将没有多大用处。
如果我的问题不明确,请告诉我,我会进一步澄清。
答案 0 :(得分:2)
如果要查看哪些代码分配了这些实例,请转到“内存设置”并启用“记录分配堆栈跟踪”。 “记录分配堆栈跟踪”选项已解释为'Profiling with VisualVM part 2'。打开它后,对应用程序进行概要分析,拍摄分析结果的快照。在快照中右键单击特定类并调用“显示分配堆栈跟踪”。