java - 在 Java Memory Pool 中,JAVA 11 中的 Code Cache 替换是什么?

标签 java jvm mbeans

我看到以下相关问题 - how-is-the-java-memory-pool-dividedgarbage-collection-not-running-for-code-cache-memory-pool但我没有相关的答案。

正如您通过 Jconsole 看到的,内存池中没有更多可用的代码缓存,需要一些关于它的替代品的详细信息以及我们在哪里可以找到有关更改的更多详细信息?

enter image description here

最佳答案

我相信重组是伴随 Java 9 而来的。

代码缓存被分割成不同的代码堆,而不是只有一个代码堆,每个代码堆都包含特定类型的编译代码。这样的设计能够分离具有不同属性的代码。

主要想法是提高性能并支持 future 的扩展。

编译后的代码分为三种不同的顶层类型:

  • JVM 内部(非方法)代码
  • 配置代码
  • 非剖析代码

对应的代码堆是:

  • 包含非方法代码的非方法代码堆,例如编译器缓冲区和字节码解释器。此代码类型将永远保留在代码缓存中。

  • 一个经过分析的代码堆,其中包含经过轻微优化的分析方法,具有较短的生命周期。

  • 包含完全优化的非分析方法的非分析代码堆,其生命周期可能很长。

您可以在 JEP-197 中找到一些有用的详细信息(例如重组的动机、如何配置新堆等)。 :)

关于java - 在 Java Memory Pool 中,JAVA 11 中的 Code Cache 替换是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59189225/

相关文章:

java - 如何在 JBoss 6.1 EAP 的 Java EE 中以编程方式获取绑定(bind)服务器地址和端口?

java - 第一次连接org.hibernate.exception.JDBCConnectionException : Unable to acquire JDBC Connection

java - 如何读取 Zip 文件内的文件内容

java - JIT/Hotspot 技术书籍

Java 内存不足错误

jvm - 尝试开始 JFR 记录时出现 AttachNotSupportedException

java - 如何使用 MBean 上传文件?

java - Tomcat 监控 - connectionCount JMX mbean

java - 如何在java 1.5中向透明JFrame添加非透明组件?

java - 如何对字符串进行排序,使带有额外信息的值首先出现?