当前位置: 首页 > 面试题库 >

JCMD的代码/内部部分包含什么?

司寇灵均
2023-03-14
问题内容

为基于JVM的服务确定docker容器的尺寸非常棘手(众所周知)。我很确定我们的容器尺寸略有不足,并且想清除一些与监视时看到的特定jcmd(本机内存跟踪器)输出有关的问题。

问题:

  • jcmd报告的“内部”中是否包含直接字节缓冲区?
  • jcmd报告的“代码”中除代码缓存外还有什么?
  • 是否有一种很好的方法来限制jcmd报告的“代码”部分。我阅读了https://docs.oracle.com/javase/8/embedded/develop-apps-platforms/codecache.htm,但这仅涵盖了代码缓存限制,建议将JVM默认设置保持不变。

JCMD输出在这里。

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

一些背景细节:

设置:

-服务器-Xms1792m -Xmx1792m -XX:MetaspaceSize = 128M-XX:MaxMetaspaceSize = 192M -XX:+ UseG1GC -XX:+ UseStringDeduplication-XX:MaxDirectMemorySize = 256m -XX:NativeMemoryTracking = detail

  • 在AWS / EC2中运行的Docker容器2500MiB

问题答案:

jcmd报告的“内部”中是否包含直接字节缓冲区?

(更新) ByteBuffer.allocateDirect内部调用Unsafe.allocateMemory,该调用由NMT在“内部”部分中
计数

(以mtInternal常数表示)。

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

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

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

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

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



 类似资料:
  • 问题内容: 我在主布局文件中有这个 我的目录结构中有header.html部分模板。 如何在我的应用程序中包含此模板?我认为angular在处理完控制器后会自动包含模板,但是它不起作用。 标头节点应替换为此文件的内容。 问题答案: 包含来自外部文件的模板/ html片段的一种方法是使用指令(doc)。 要么

  • 本文向大家介绍Java二维码登录流程实现代码(包含短地址生成,含部分代码),包括了Java二维码登录流程实现代码(包含短地址生成,含部分代码)的使用技巧和注意事项,需要的朋友参考一下 近年来,二维码的使用越来越风生水起,笔者最近手头也遇到了一个需要使用二维码扫码登录网站的活,所以研究了一下这一套机制,并用代码实现了整个流程,接下来就和大家聊聊二维码登录及的那些事儿。 二维码原理 二维码是微信搞起来

  • 使用Tomcat 7.0.34、Primefaces 3.5和mojarra 2.1.25,我得到了以下文件“client.xhtml”: 文件client.inc(这是一个普通的xhtml,在几个xhtml文件中使用)如下:(简化) 和“客户端比林.inc”:(我在其他几个xhtml文件中使用) “clientBilling.inc”中的选项卡没有显示,但如果我将其从p:tabView上取下,就

  • 问题内容: 这就是我现在正在做的。有没有更好的方法来访问超类? 我正在使用Google Web Toolkit进行编程,但是我认为这确实是一个通用的Java问题。 问题答案: 您可以使用所谓的qualified 。 [JLS 15.8.4。合格的](http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8

  • 请检查这段代码,看看@Arun R在如何计算覆盖另一个矩形的矩形面积中所说的算法有什么问题 为什么它没有删除其他内部的矩形