首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用Java本机内存跟踪(NMT)对性能有什么影响?

启用Java本机内存跟踪(NMT)对性能有什么影响?
EN

Stack Overflow用户
提问于 2019-01-22 04:52:41
回答 1查看 1.3K关注 0票数 1

我试图诊断在Kubernetes下在Docker中运行的java进程的内存问题。

Java版本是Java 8 (1.8.0):

代码语言:javascript
复制
root@myHost:/# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

我看到很多在线讨论和建议以及对此的质疑都涉及到本机内存跟踪的使用。

如果启用NMT,会对性能或内存使用产生什么样的负面影响?

使NMT在任何时候都处于“详细”级别是否良好/允许/建议:

代码语言:javascript
复制
-XX:NativeMemoryTracking=detail
EN

回答 1

Stack Overflow用户

发布于 2019-01-23 03:54:35

来自Java 8文档的Oracle本机内存跟踪

获取详细数据:要更详细地了解本机内存使用情况,请使用命令行选项启动JVM:-XX:NativeMemoryTracking=detail。这将准确地跟踪哪些方法分配的内存最多。启用NMT将导致JVM性能下降5-10 %,NMT的内存使用量将增加2个单词到所有malloc内存中作为malloc报头。NMT也会跟踪NMT内存的使用情况。

一旦启用了NMT,VM.native_memory的jcmd输出实际上将记录由于启用NMT而导致的内存分配开销:

代码语言:javascript
复制
#jcmd 25 VM.native_memory
25:

Native Memory Tracking:

Total: reserved=2724013KB, committed=1526785KB
-                 Java Heap (reserved=1048576KB, committed=1048576KB)
                        (mmap: reserved=1048576KB, committed=1048576KB)
...

    Native Memory Tracking (reserved=6004KB, committed=6004KB)
                        (malloc=384KB #6040)
                        (tracking overhead=5621KB)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54301468

复制
相关文章

相似问题

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