我正在尝试一个工具在这里testing我的Java内存使用情况。 它读入一个堆转储文件并将信息打印为html。 但是,这些表格显示如下: Class Instance Count Total Size class [B 36585 49323821 class [Lcom.sun.mail.imap.IMAPMessage; 790 16254336 class [C 124512 12832896 class [I 23080 11923504 class [Ljava.lang.Object; 13614 6664528 class java.lang.String 108982 2179640 class java.lang.Integer 219502 878008 这些是什么[B [C等级?
如何找到Java中的内存泄漏(例如,使用JHat)? 我已经尝试在JHat中加载堆转储以获得基本的外观。 但是,我不明白我应该如何能够找到根引用( ref )或任何它被称为。 基本上,我可以告诉有几百兆哈希表条目([java.util.HashMap $条目或类似的东西),但地图遍布的地方…有没有办法搜索大地图,或者找到大对象树的一般根源? [编辑]好吧,我已经阅读了答案,但我们只是说我是一个便宜的混蛋(这意味着我更感兴趣学习如何使用JHat比支付JProfiler)。 此外,JHat始终可用,因为它是JDK的一部分。 除非JHat没有办法,否则蛮力,但我不敢相信可以这样。 此外,我不认为我将能够实际修改(添加所有地图大小的日志记录)并运行足够长的时间,以便我注意到泄漏。