gpt4 book ai didi

java - 让 JVM 根据需要增加内存需求,直到达到 VM 限制的大小?

转载 作者:太空狗 更新时间:2023-10-29 22:42:31 25 4
gpt4 key购买 nike

我们发布了一个 Java 应用程序,其内存需求可能会因所处理数据的大小而有很大差异。如果您不设置最大 VM(虚拟内存)大小,通常JVM 在大数据上因 GC 失败而退出。

我们希望看到的是 JVM 请求更多内存,因为 GC 无法提供足够的内存,直到可用的 VM 全部耗尽。例如,从 128Mb 开始,并在 GC 失败时按几何级数(或其他步骤)增加。

JVM(“Java”)命令行允许显式设置最大 VM 大小(各种 -Xm* 命令),您认为这样设计就足够了。我们尝试在应用程序附带的 .cmd 文件中执行此操作。但如果你选择任何特定的数字,你会得到两种不良行为之一:1)如果你的数字足够小,可以在大多数情况下工作目标系统(例如 1Gb),它对于大数据来说不够大,或者 2) 如果你让它变得非常大,JVM 拒绝在那些实际 VM 小于指定值的系统上运行。

如何设置 Java 以在需要时使用可用的 VM,而无需事先知道该数量,也无需在启动时全部获取?

最佳答案

您还可以使用以下选项:-XX:+进取堆

根据[文档][1]:

The -XX:+AggressiveHeap option inspects the machine resources (size of memory and number of processors) and attempts to set various parameters to be optimal for long-running, memory allocation-intensive jobs. It was originally intended for machines with large amounts of memory and a large number of CPUs, but in the J2SE platform, version 1.4.1 and later it has shown itself to be useful even on four processor machines. With this option the throughput collector (-XX:+UseParallelGC) is used along with adaptive sizing (-XX:+UseAdaptiveSizePolicy). The physical memory on the machines must be at least 256MB before AggressiveHeap can be used. The size of the initial heap is calculated based on the size of the physical memory and attempts to make maximal use of the physical memory for the heap (i.e., the algorithms attempt to use heaps nearly as large as the total physical memory).

[1]: http://java.sun.com/docs/hotspot/gc1.4.2/#4.2.2 . AggressiveHeap|大纲

关于java - 让 JVM 根据需要增加内存需求,直到达到 VM 限制的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152507/

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