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

Java5 -XX:MaxHeapFreeRatio = 45不会释放堆,即使超过45%的堆可用

锺离鸿
2023-03-14
问题内容

我有一个带有以下参数的Java应用程序,但是即使总可用空间大于45%(可以通过可视VM看到),也无法回收堆。JVM是否有任何理由不释放该堆空间?与Java6中预期的设置相同。运行Java5运行时和编译时间

java -jar -Xmx1024m -XX:MinHeapFreeRatio=15 -XX:MaxHeapFreeRatio=45 -XX:+HeapDumpOnOutOfMemoryError <myjarname>

问题答案:

我们相信我们已经找到了答案。我们正在运行的系统是具有多个CPU的服务器级计算机,JRE正在检测多个CPU,并将GC设置为使用并行而不是串行GC,这与XX:MaxHeapFreeRatio设置不兼容。



 类似资料:
  • 因此,我知道对堆栈中分配的变量调用会导致无效指针错误。 在ED指针中,在实际指针之前分配8个字节,以保留关于指针大小的信息。因此,我想知道是否在一个结构之前做了一个,然后在该结构上调用free,是否可以释放该结构(当然,这偏离了分配这8个字节是所做的唯一额外的事情的假设)。 我想我的最后一个问题是,堆栈变量分配和堆分配之间是否有真正的区别(就后端对内核的调用而言)。

  • 我有一个Springboot应用程序,Mule作为微服务在docker容器中运行。即使空闲时也需要大约700MB。注意到JVM分配了380 MB的堆,这是使用参数提供的最大堆。虽然分配了最大堆,但微服务在空闲时只使用大约50 MB。问题是如何从JVM释放未使用的内存。 似乎减少MaxHeapFreeRatio我们可以要求JVM在有更多可用内存时收缩。然而没有太大区别,JVM也没有释放内存。但是当我

  • 我是分析Java记忆问题的新手。所以请原谅我这个问题看起来很天真 我在运行应用程序时设置了以下JVM参数: 我正在使用visualVM监控使用情况:以下是我看到的 问题是,即使应用程序没有接收任何要处理的数据,使用的内存也不会下降。当应用程序启动时,使用的空间开始变小(大约1GB),但随着应用程序的运行而增加。然后用过的记忆永远不会消失。我的问题是,为什么即使应用程序中没有发生重大处理,使用的堆内

  • 作者:不详 1965年时,贝尔实验室(Bell Labs)加入一项由奇异电子(General Electric)和麻省理工学院(MIT)合作的计画;该计画要建立一套多使用者、多任务、多层次(multi-user、multi- processor、multi-level)的MULTICS操作系统。直到1969年,因MULTICS计画的工作进度太慢,该计画就被停了下来。当时,Ken Thompson(

  • 概述 连接片45°通常用于连接45°或者135°角的机械零件 参数 材质:6061铝 厚度:3mm 尺寸图纸 搭建案例

  • 问题内容: 我只知道非基元(对象)放在堆上,方法在堆栈上,但是基元变量呢? -更新 根据答案,我可以说堆可以有一个新的堆,并且给定对象可以堆吗?假设对象将具有基本变量和引用变量。 问题答案: 本地定义的基元将在堆栈中。但是,如果将原语定义为对象实例的一部分,则该原语将位于堆上。 关于更新: 对象没有自己的堆栈。在我的示例中,实际上是的每个实例的一部分。只要分配了HeapClass的实例(例如),就