线程堆栈大小不匹配本机内存跟踪线程堆栈大小

时间:2017-07-07 15:38:44

标签: java memory tomcat7 maven-3 native

我目前正在对Maven Tomcat7插件进行一些内存设置测试。我正在使用以下内容将Thread Stack Size设置为128k:

set MAVEN_OPTS=-XX:NativeMemoryTracking=summary -Xss128k

之后,我使用Native Memory Tracking Option运行jcmd,得到以下输出。

C:\Users\gdrocell>jcmd 8672 VM.native_memory summary
8672:

Native Memory Tracking:

Total: reserved=9995213KB, committed=1283517KB
-                 Java Heap (reserved=8282112KB, committed=868864KB)
                            (mmap: reserved=8282112KB, committed=868864KB)

-                     Class (reserved=1103777KB, committed=59857KB)
                            (classes #9079)
                            (malloc=10145KB #11226)
                            (mmap: reserved=1093632KB, committed=49712KB)

-                    Thread (reserved=15844KB, committed=15844KB)
                            (thread #25)
                            (stack: reserved=15616KB, committed=15616KB)
                            (malloc=72KB #132)
                            (arena=156KB #48)

-                      Code (reserved=253665KB, committed=23761KB)
                            (malloc=4065KB #6562)
                            (mmap: reserved=249600KB, committed=19696KB)

-                        GC (reserved=313042KB, committed=288418KB)
                            (malloc=10386KB #203)
                            (mmap: reserved=302656KB, committed=278032KB)

-                  Compiler (reserved=152KB, committed=152KB)
                            (malloc=21KB #204)
                            (arena=131KB #3)

-                  Internal (reserved=10653KB, committed=10653KB)
                            (malloc=10589KB #10938)
                            (mmap: reserved=64KB, committed=64KB)

-                    Symbol (reserved=13705KB, committed=13705KB)
                            (malloc=10756KB #102196)
                            (arena=2949KB #1)

-    Native Memory Tracking (reserved=2065KB, committed=2065KB)
                            (malloc=7KB #85)
                            (tracking overhead=2058KB)

-               Arena Chunk (reserved=197KB, committed=197KB)
                            (malloc=197KB)

如您所见,线程堆栈大小似乎为15.25mb。有谁知道这是为什么?

1 个答案:

答案 0 :(得分:1)

根据此博客(https://blogs.oracle.com/saas-fusion-app-performance/how-to-set-stack-size-to-overcome-javalangstackoverflowerror

  

如果无法更改堆栈要求   应用程序,您可以使用-Xss更改线程堆栈大小   命令行选项。

这是每个线程的堆栈大小。你提到的数字会随线程数而变化。

修改

这是120左右的很多线程。我会使用-XX:NativeMemoryTracking = detail。查看信息是否更有意义