这可能是一个菜鸟问题,但我需要运行一个处理大型数据集的java应用程序。所以我在-Xmx14G上转了一圈,知道我的机器有16G的物理内存。
过了一会儿,砰,我的操作系统通知我,我的启动磁盘几乎满了。我检查了我的过程,没有OOM异常,只是它停止了。检查了我的活动监视器,并没有说应用程序运行在全内存容量。
JVM如何存储/使用内存?
发布于 2014-01-28 02:01:23
通常,JVM会分配新的内存,直到堆满为止,在这种情况下,它会收集垃圾,释放未引用的对象。如果您为堆分配了14 If,那么它很可能会消耗那么多内存。
发布于 2014-01-28 02:07:05
还有另一个JVM参数-- -Xms<size> --它的初始堆大小。如果我们不显式地设置它,JVM将根据PC配置自动选择一个。这个数值从来没有那么大,通常是6400万。以后JVM可能会分配最多最多的内存。但只有当应用程序真正使用它时,才会发生这种情况。如果实际内存使用量减少,JVM将将内存缩小到更小的大小。
https://stackoverflow.com/questions/21395408
复制相似问题