我知道,在Java中,线程堆栈的大小取决于JVM和OS体系结构,默认情况下(除非设置了-Xss ),大小在256 K到1m之间。是否有一种方法或工具允许查看运行时所有当前正在运行的线程消耗的总堆栈大小,就像我可以使用JDK包中的JVisualVM看到堆大小或Metaspace大小一样?我知道这个值可以计算为线程堆栈大小*当前正在运行的线程数,但是在运行时监视这个值是很好的。
发布于 2021-02-07 22:41:21
你可以试试JProfiler。如果您想在自己尝试之前看到它在运行,请检查这。
另外,您认为线程堆栈大小在256 k到1m之间变化的想法是绝对正确的。
在JDK 8中,HotSpot安装附带了一个名为本机内存跟踪(默认:禁用)的特性。若要启用它,请使用:
-XX:NativeMemoryTracking=[off|detail|summary]启用NMT之后,可以使用以下方法检查线程或线程堆栈占用的内存空间:
jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]https://stackoverflow.com/questions/66093387
复制相似问题