【发布时间】:2012-02-06 01:04:36
【问题描述】:
我的应用程序使用的内存比我想象的要多得多,我试图了解哪个类正在使用大量内存并且可能没有释放它。
我正在使用 VisualVM,在内存采样器中,我可以看到大部分内存都花在了字符、字符串和字节上,我所有的类都使用字符串,但是正如您所知,VisualVM 显示系统中的所有字符和字符串(所有字符都与字符串相同,这使得很难理解谁拥有它们), 据我了解,保存这些字符串的其他类的大小是在没有字符串的情况下计算的。
我如何在这个工具中看到谁是“真正的”最大的类——那些拥有所有这些字符串的类? (如果我能从这些类中得到它们的字符串,而不是相反) 我尝试在 heapDump 中使用“到最近的 GC 的根”,但大约有 4,000,000 个字符串,所以我找到“有问题”的机会非常小......
谢谢!!!
【问题讨论】:
-
我认为你不能明确地说哪个类使用了多少内存。如果你在某个不同的类中实例化另一个类的对象,你会怎么做?另外据我所知,您无法获得基于类的内存利用率。
标签: java memory memory-leaks visualvm jvisualvm