我的java线程占用多少内存?

我的java线程占用多少内存?,java,multithreading,Java,Multithreading,有没有办法知道我的java线程在VM中占用了多少内存 例如,使用堆栈跟踪转储或其他方法 谢谢Java线程将堆用作共享内存。单个线程有它们的堆栈(您可以通过-Xss命令行选项设置堆栈的大小,默认值为512KB),但所有其他内存(堆)都不属于特定线程,询问一个特定线程使用了多少内存根本没有意义。但是在我的系统中,我有所有的线程做类似的功能。为了得到一个大概的图片,我想得到堆的大小,然后除以线程的数量,得到每个线程的大概大小。。这是一个票价假设吗?@Vikas:这仍然没有意义。你想用这个数字做什么?我

有没有办法知道我的java线程在VM中占用了多少内存

例如,使用堆栈跟踪转储或其他方法


谢谢

Java线程将堆用作共享内存。单个线程有它们的堆栈(您可以通过
-Xss
命令行选项设置堆栈的大小,默认值为512KB),但所有其他内存(堆)都不属于特定线程,询问一个特定线程使用了多少内存根本没有意义。

但是在我的系统中,我有所有的线程做类似的功能。为了得到一个大概的图片,我想得到堆的大小,然后除以线程的数量,得到每个线程的大概大小。。这是一个票价假设吗?@Vikas:这仍然没有意义。你想用这个数字做什么?我必须建立一个系统,根据一些外部因素动态地增加或减少线程的数量。我想分析一下我的两个选择。1.每隔一段或两段时间继续启动和删除系统中的线程。从最大线程数开始,为了减少线程数,我只告诉他们在线程中等待。。从实现的角度来看,第二种方法更简单,但希望分析等待线程在系统中占用的堆栈空间,这样我就不会有内存不足的可能。线程堆栈大小:“在x86 Solaris/Linux上,32位虚拟机为320k,64位虚拟机为1024k。在Windows上,[…]此值在32位VM中为320k,在64位VM中为1024k。“@Lauri:所有堆内存在每个定义的所有线程之间共享。您应该试用该工具。Sun必须在侦听-您可以使用特定于平台的
ThreadMXBean
上的新接口来获取每个线程的内存使用情况:@BeeOnRope这是一个很棒的答案!你应该把它作为一个答案发布,我会投票支持它。@HendyIrawan,事实上它本来就是这样,但它似乎被版主删除了,变成了一条评论。不知道为什么。。。