【问题标题】:How to resolve segmented code cache related memory issues in Java 9? [closed]如何解决 Java 9 中与分段代码缓存相关的内存问题? [关闭]
【发布时间】:2017-09-30 03:07:08
【问题描述】:

分段代码缓存是 Java 9 中引入的一项新功能,它将代码缓存划分为多个段,这在很大程度上提高了性能。但是由于每个代码堆的大小固定,可能会造成一些内存浪费,如果代码缓存很小,一个代码堆已满,另一个代码堆中仍有空间。

那么有哪些可能的解决方法来克服这些内存问题?

【问题讨论】:

  • ...有人告诉您,此功能需要权衡取舍。您要么接受一些内存成本以换取性能,要么不接受。你还想要什么?如果它可以免费完成,无论如何它都会为每个人提供。
  • @LouisWasserman 如何动态调整代码缓存的大小?
  • 如果您有特定的解决方法,请发布一些使用它的代码并询问有关它的特定问题。

标签: java java-9


【解决方案1】:

Segmented Code Cache JEP 的风险和假设以更简洁的方式陈述了相同的内容:-

每个代码堆的大小固定会导致潜在的内存浪费 如果一个代码堆已满而另一个代码中仍有空间 堆。 特别是对于非常小的代码缓存大小,可能会发生 即使仍有可用空间,编译器也会关闭。 为了解决这个问题,将添加一个选项来关闭 小代码缓存大小的分段。

引入以下命令行开关来控制代码堆的大小:

  • -XX:NonProfiledCodeHeapSize:设置包含未分析方法的代码堆的大小(以字节为单位)。

  • -XX:ProfiledCodeHeapSize:设置包含分析方法的代码堆的大小(以字节为单位)。

  • -XX:NonMethodCodeHeapSize:设置包含非方法代码的代码堆的大小(以字节为单位)。

【讨论】:

  • 他们把最后一个改成了NonNMethodCodeHeapSize。还有一点跟进here
猜你喜欢
  • 2013-06-06
  • 2012-07-10
  • 2021-11-14
  • 2017-01-18
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多