为基于JVM的服务确定停靠容器的尺寸是很棘手的(我们都知道)。我非常肯定,我们有一个稍微低维度的容器,并想澄清一些问题,我有一些问题,有关特定的jcmd (原生内存跟踪器)输出,我们看到时,监测。
问题:
JCMD输出来了。
直接字节缓冲器 JMX属性在这里。
一些背景细节:
设置:
发布于 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)可能会减少“代码”使用的内存量,因为生成的代码会少得多。但是,请确保您了解什么是分层编译,以及它可能会对性能产生什么影响。
https://stackoverflow.com/questions/47309859
复制相似问题