簡體   English   中英

JVM作為進程的內存詳細信息

[英]Memory details of JVM as a process

我是這個話題的新手,所以,如果我的問題很明顯,那么道歉,但這里是 -
每當我們啟動Java應用程序時,都會創建一個新的JVM實例。 JVM本身是一個在操作系統上運行的進程,與任何其他進程一樣,它有自己的內存需求。
我知道堆和非堆內存結構以及它們如何配置和操作。 我正在尋找的是jvm進程本身的內存細節, 整體內存是如何划分的,即jvm自己的內存需求+堆+非堆+本機堆棧
有幾個細分市場?
操作系統分配給JVM的內存量以及jvm如何進一步使用它?
在運行應用程序時是否有任何命令或實用程序來檢查這些詳細信息?
我已經google了很多但沒有找到任何具體的方向,幾乎所有文章都解釋了堆和非堆內存結構(eden / old / meta等)。 我也訪問了下面的鏈接 -
JVM內存類型
java內存池是如何划分的?
JVM內存段分配
https://blog.codecentric.de/en/2010/01/the-java-memory-architecture-1-act/
通過Linux進程映射JVM內存
了解JVM內存分配和Java內存不足:堆空間
看來我被困在這里,關於這個主題的任何指針都會很棒,所以我可以開始朝那個方向看。

Java 8的本機內存跟蹤(NMT)功能有助於回答您的問題。

使用選項-XX:NativeMemoryTracking=summary運行Java
然后在運行時執行以下命令以打印JVM內存統計信息:

jcmd <pid> VM.native_memory summary

輸出結果如下:

Total:  reserved=664192KB,  committed=253120KB

-                 Java Heap (reserved=516096KB, committed=204800KB)
                            (mmap: reserved=516096KB, committed=204800KB)

-                     Class (reserved=6568KB, committed=4140KB)
                            (classes #665)
                            (malloc=424KB, #1000)
                            (mmap: reserved=6144KB, committed=3716KB)

-                    Thread (reserved=6868KB, committed=6868KB)
                            (thread #15)
                            (stack: reserved=6780KB, committed=6780KB)
                            (malloc=27KB, #66)
                            (arena=61KB, #30)

-                      Code (reserved=102414KB, committed=6314KB)
                            (malloc=2574KB, #74316)
                            (mmap: reserved=99840KB, committed=3740KB)

-                        GC (reserved=26154KB, committed=24938KB)
                            (malloc=486KB, #110)
                            (mmap: reserved=25668KB, committed=24452KB)

-                  Compiler (reserved=106KB, committed=106KB)
                            (malloc=7KB, #90)
                            (arena=99KB, #3)

-                  Internal (reserved=586KB, committed=554KB)
                            (malloc=554KB, #1677)
                            (mmap: reserved=32KB, committed=0KB)

-                    Symbol (reserved=906KB, committed=906KB)
                            (malloc=514KB, #2736)
                            (arena=392KB, #1)

-           Memory Tracking (reserved=3184KB, committed=3184KB)
                            (malloc=3184KB, #300)

-        Pooled Free Chunks (reserved=1276KB, committed=1276KB)
                            (malloc=1276KB)

-                   Unknown (reserved=33KB, committed=33KB)
                            (arena=33KB, #1)

更多信息在這里這里

如果您正在尋找命令行實用程序,請從jps開始,只打印所有正在運行的java進程的PID。 然后選擇一個您想要發現的並使用帶有PID的jmap

JDK也帶有可視化工具。 舊的JConsoke和更新更好的VisualVM

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM