我继承了一个Java applet(一个实际的
运行近两天后,jmap -histo将顶级堆消费者显示为:
num #instances #bytes class name --- ---------- ------ ---------- 1: 14277 73218802: 59626 5699968 3: 14047 5479424 4: 14277 5229744 5: 59626 4778944 6: 71026 3147624
麻烦的是,我不明白这些东西是什么.至少有两件事情发生了:constantPoolKlass + constantPoolCacheKlass + instanceKlassKlass看起来是相关的,constMethodKlass + methodKlass也是如此.从名称来看,它们似乎与类加载器相关.
如果我不得不猜测我会说applet创建了大约14,277个对象,其中每个对象有大约4种方法,总共大约59626个方法.然而,jmap输出并没有显示任何具有如此大量实例的类,也没有看起来像其他类对象的总和加起来为14277.所以也许我对这些对象的作用不正确.谁能解释一下?