我通过使用 jmap 得到了堆转储。我将它加载到 Eclipse MAT 中。java.lang.Thread 是最大的消费者。当我单击直接支配者时,它会显示一个 ArrayList,其中包含 17K 个对象(org.jboss.security.SecurityAssociation$SubjectContext)。
我在不同的时间(2 小时间隔)进行了堆转储。
java.lang.Thread @ 0xd09f05d0 pool-7-thread-1 线程 112 | 12,198,024 | 7.64%
java.lang.Thread @ 0xd09e64c8 pool-7-thread-1 线程 112 | 19,037,464 | 8.58%
浅堆:112 保留堆:19,037,464 百分比 8.58
堆大小正在增加。
线程对象(0xd09f05d0 ,0xd09e64c8)不同,线程名称相同(pool-7-thread-1)。它是否仍然引用同一个线程并且它的堆在增长?或者一个线程(0xd09f05d0)完成了它的操作并且具有不同对象(0xd09e64c8)的同一个线程用于不同的操作并且它持有不同的对象?