2017-07-07 6 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.25 MBです。誰がなぜこれが分かっていますか?

+0

質問には適切な言語/フレームワークタグを付けてください。既存のtasは特に有用ではない。 –

+0

タグが追加されました..... –

答えて

1

それは アプリケーションのスタック要件を変更することはできない場合は、-Xss コマンドラインオプションを使用することにより、スレッドのスタックサイズを変更することができ、このブログ(https://blogs.oracle.com/saas-fusion-app-performance/how-to-set-stack-size-to-overcome-javalangstackoverflowerror

によります。

これはスレッドごとのスタックサイズです。あなたが言及する数字は、スレッドの数によって異なります。 NativeMemoryTracking =詳細:私は-XXを使用する120の周りに糸がたくさんある

EDIT

。情報がより意味をなさないかどうかを確認するには

+0

詳細な要約を見ると、内部のjvmスレッドのいくつかがより多くのメモリを割り当てていることが判明しました。内部スレッドのサイズは、-XX:ThreadStackSize = Nで制御することができますが、Nは1MBと見なされます。 -Xssは、mainから生成されたスレッドのスレッドスタックサイズのみを制御します。 –

+0

私が読んだドキュメントの1つは、1MBとそれより小さい引数について述べたと思います。ありがとう! – efekctive

関連する問題