2017-07-07 100 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