2017-07-07 102 views
1

我目前正在对Maven Tomcat7插件上的内存设置进行一些测试。我的线程堆栈大小设置为128K以下各项:线程堆栈大小不匹配本机内存跟踪线程堆栈大小

set MAVEN_OPTS=-XX:NativeMemoryTracking=summary -Xss128k 

在那之后,我跟本机内存跟踪选项我得到以下输出运行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。有人知道为什么吗?

+0

请用适当的语言/框架标签标记您的问题。现有的tas不是特别有用。 –

+0

添加标签..... –

回答

1

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

如果这是不可能改变 应用程序的堆栈要求,可以通过使用-Xss 命令行选项更改线程堆栈大小。

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

编辑

也就是120左右。很多线程的,我会用-XX:NativeMemoryTracking =细节。要查看信息是否更有意义

+0

当我查看详细的摘要时,事实证明一些内部jvm线程正在分配更多内存。内部线程的大小可以通过-XX:ThreadStackSize = N来控制,但是N的最小值似乎是1 MB。 -Xss只控制从main派生的线程的线程堆栈大小。 –

+0

我认为我读过的文档中提到了1MB与较小的参数。谢谢! – efekctive