gpt4 book ai didi

Java 多进程和堆大小

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:08 24 4
gpt4 key购买 nike

我们有一个运行许多 Jar 文件的旧系统。每个 jar 文件都在单独的进程中运行。其中一些 jar 文件的内存使用量出现峰值。因此,它们的堆限制很高(~128MB),尽管在任何给定时刻它们中的大多数都不使用该内存。

问题是,Java 没有压力释放内存。由于垃圾收集器看不到全局,因此它没有减少堆大小的压力。因此,每个进程都会分配约 100MB 的多余堆(大多数时候它们需要的空间少于 30MB)。

在许多 java 实例上增加这种行为,你就会遇到一个大问题。除了重写所有 jar 以便在单个 JVM 中工作之外,还有什么简单的解决方案吗?

最佳答案

JVM 有一些选项来控制堆扩展/收缩。对于 HotSpot,这是

MaxHeapFreeRatio:GC 后避免收缩的最大堆空闲百分比。MinHeapFreeRatio:GC 后堆空闲的最小百分比,以避免扩展。

如果已用内存与空闲内存的比率超过MaxHeapFreeRatio,JVM将收缩到-Xms。如果该比率小于 MinHeapFreeRatio,则 JVM 会扩展。

关于Java 多进程和堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17399704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com