Java如何保留/使用内存?

时间:2014-01-28 01:53:50

标签: java macos jvm

这可能是一个noob问题,但我需要运行一个处理大型数据集的java应用程序。所以我去了-Xmx14G,知道我的机器有16G的物理内存。

不久之后,热潮,我的操作系统通知我的启动盘几乎已满。我检查了我的进程,没有OOM异常,只是它停滞了。检查我的活动监视器,并未说明应用程序以完全内存容量运行。

JVM如何保留/使用内存?

2 个答案:

答案 0 :(得分:0)

通常,JVM会在堆已满之前分配新内存,在这种情况下,它会收集垃圾,释放未引用的对象。如果你为堆分配了14GB,那么它很可能会占用那么多内存。

答案 1 :(得分:0)

还有另一个JVM参数-Xms<size>它'初始堆大小。如果我们没有明确设置它,JVM将根据PC配置自动选择一个。这个值永远不会那么大,通常是64M。以后JVM可以分配更多内存到最大值。但它只在应用程序真正使用它时才会发生。如果实际内存使用量减少,JVM会将内存缩小到更小的大小。