JVM堆 - 有没有方法确定单个线程消耗了多少堆空间?

3

有没有一种编程方式(不使用分析工具等)可以确定单个线程消耗了多少堆内存?或者有没有一种方法可以设置线程消耗的内存限制?

(我认为这在Java7上是可能的)


你的意思是什么?一个线程所使用的唯一内存是它的堆栈和JVM操作开销。你是指这个吗? - skaffman
请告诉我我的答案是否正确。 - Saurabh Gokhale
1个回答

1
你可以使用ThreadMXBean.getThreadAllocatedBytes(long id)

返回指定 ID 的线程在堆内存中分配的总内存量的近似值(以字节为单位)。由于一些 Java 虚拟机实现可能使用对象分配机制,导致对象分配时间和其大小记录时间之间存在延迟,因此返回的值是一个近似值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接