首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JCMD的代码/内部部分包含哪些内容?

JCMD的代码/内部部分包含哪些内容?
EN

Stack Overflow用户
提问于 2017-11-15 14:22:04
回答 1查看 1K关注 0票数 8

为基于JVM的服务确定停靠容器的尺寸是很棘手的(我们都知道)。我非常肯定,我们有一个稍微低维度的容器,并想澄清一些问题,我有一些问题,有关特定的jcmd (原生内存跟踪器)输出,我们看到时,监测。

问题:

JCMD输出来了。

直接字节缓冲器 JMX属性在这里。

一些背景细节:

设置:

  • 基于弹簧引导的应用
  • JVM选项: -server -Xms1792m -Xmx1792m -XX:MetaspaceSize=128M - XX:MaxMetaspaceSize=192M -XX:+UseG1GC -XX:+UseStringDeduplication - XX:MaxDirectMemorySize=256m -XX:NativeMemoryTracking=detail
  • 码头集装箱2500MiB在AWS/EC2中运行
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 18:03:16

是否如jcmd所报告的“内部”中包括了Direct缓冲区?

(更新) ByteBuffer.allocateDirect内部调用Unsafe.allocateMemory,由NMT在内部部分(由mtInternal常量表示)由NMT表示。

相反,MappedByteBuffers (由FileChannel.map获得)没有反映在NMT报告中,尽管从OS的角度来看,它们肯定会影响进程使用的内存量。

jcmd报告的“代码”中除了代码缓存之外还有什么?

用于维护编译代码和生成的运行时存根的辅助VM结构:哈希表、代码字符串、适配器指纹等。与CodeCache本身相比,它们都很小。这些结构构成报告中的“malloc”部分,而CodeCache则进入“mmap”部分。

是否有一种很好的方法来限制jcmd报告的“代码”部分。

关闭分层编译(-XX:-TieredCompilation)可能会减少“代码”使用的内存量,因为生成的代码会少得多。但是,请确保您了解什么是分层编译,以及它可能会对性能产生什么影响。

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

https://stackoverflow.com/questions/47309859

复制
相关文章

相似问题

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