首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >竞技场在JVM NMT的输出中意味着什么?

竞技场在JVM NMT的输出中意味着什么?
EN

Stack Overflow用户
提问于 2022-07-03 15:45:00
回答 1查看 114关注 0票数 0

我为一个Java应用程序运行了“jcmd VM.native_memory详细信息”,输出如下:

代码语言:javascript
复制
Total: reserved=4741MB, committed=3506MB
-                 Java Heap (reserved=2350MB, committed=2350MB)
                            (mmap: reserved=2350MB, committed=2350MB)

-                     Class (reserved=1676MB, committed=751MB)
                            (classes #151986)
                            (  instance classes #144245, array classes #7741)
                            (malloc=24MB #383379)
                            (mmap: reserved=1652MB, committed=727MB)
                            (  Metadata:   )
                            (    reserved=628MB, committed=626MB)
                            (    used=613MB)
                            (    free=13MB)
                            (    waste=0MB =0.00%)
                            (  Class space:)
                            (    reserved=1024MB, committed=100MB)
                            (    used=92MB)
                            (    free=8MB)
                            (    waste=0MB =0.00%)

-                    Thread (reserved=214MB, committed=26MB)
                            (thread #219)
                            (stack: reserved=213MB, committed=25MB)
                            (malloc=1MB #1316)
...
OMIT SOME LINES HERE 
...

-                  Internal (reserved=10MB, committed=10MB)
                            (malloc=10MB #9058)
-                    Symbol (reserved=44MB, committed=44MB)
                            (malloc=41MB #560526)               --> isn't malloc function backed up by arena under glibc?
                            (arena=2MB #1)                      --> what does this line mean?

-    Native Memory Tracking (reserved=19MB, committed=19MB)
                            (malloc=1MB #7348)
                            (tracking overhead=18MB)

-        Shared class space (reserved=17MB, committed=17MB)
                            (mmap: reserved=17MB, committed=17MB)

-               Arena Chunk (reserved=6MB, committed=6MB).           --> What does this block suggest?
                            (malloc=6MB)

-                    Module (reserved=3MB, committed=3MB)
                            (malloc=3MB #18535)

符号块为例,malloc和竞技场有什么区别?java应用程序是使用glibc在Linux上运行的,所以我认为(也许我错了)它实际上是负责内存管理的领域。但是,为什么下面还有一条分隔行,记录按竞技场分配的内存?

竞技场块块是什么意思?你能指点我一下吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-05 22:27:34

这与滑翔竞技场无关。

在HotSpot中,Arena是一种用于快速本地内存分配的结构,对特定模式进行了优化:

来自竞技场的

  1. 分配是线程本地的。没有同步是来自竞技场的involved.
  2. Memory不能部分回收。竞技场一次性处置。

竞技场分配的一个典型用例是JIT编译。当JIT编译器工作时,它会分配许多小对象(例如IR图形节点)。这些对象仅由一个编译器线程在本地使用。这些临时对象的生存期很短:当方法的编译完成时,包含所有这些对象的整个竞技场立即被删除。

Arena由分配给常规malloc的大块组成。竞技场内部的分配是一个简单的指针增量。当竞技场耗尽空闲空间时,将创建一个新块。

在上面的NMT报告中,(arena=2MB #1)表示符号区域有一个包含一个2MB块的竞技场。

Arena Chunk部分总结了所有的活动竞技场。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72847871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档