Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XmX=我必须设置它以防止Linux OOM吗_Java_Linux_Out Of Memory - Fatal编程技术网

Java XmX=我必须设置它以防止Linux OOM吗

Java XmX=我必须设置它以防止Linux OOM吗,java,linux,out-of-memory,Java,Linux,Out Of Memory,由于java应用程序消耗了太多内存,并且没有内存,所以我的整个Linux机器因OOM(OOM Killer进程杀死了错误的进程)而崩溃 我的问题是,如果我使用JVM参数-XmX,这是否会限制Java不再使用-XmX选项指定的内存?或者换一种说法,如果我不指定-XmX,java可能会分配越来越多的内存,结果导致我的linux机器上出现了OOM 多谢各位! Jens有一个默认的最大堆大小(以前是64M,我想现在是128M)。-Xmx参数改变了这个最大大小。Oracle的JVM永远不会分配比该参数中指

由于java应用程序消耗了太多内存,并且没有内存,所以我的整个Linux机器因OOM(OOM Killer进程杀死了错误的进程)而崩溃

我的问题是,如果我使用JVM参数
-XmX
,这是否会限制Java不再使用-XmX选项指定的内存?或者换一种说法,如果我不指定-XmX,java可能会分配越来越多的内存,结果导致我的linux机器上出现了OOM

多谢各位!
Jens

有一个默认的最大堆大小(以前是64M,我想现在是128M)。-Xmx参数改变了这个最大大小。Oracle的JVM永远不会分配比该参数中指定的堆大的堆

这并不是说-Xmx给出了JVM使用的RAM总量;它实际上会用到更多的东西。一些用于JVM实现本身的可执行代码;还有用于“permgen”区域的内存,可能还有用于其他目的的内存映射缓冲区。但无论如何,Oracle的JVM都不会毫无限制地提高RAM的使用率;总是有上限的


现在,为什么Linux机箱没有更多的交换空间?它很便宜,而且从一开始就可以防止这种事情发生。

有一个默认的最大堆大小(以前是64M,我想现在是128M)。-Xmx参数改变了最大大小。Oracle的JVM永远不会分配比该参数中指定的堆大的堆

这并不是说-Xmx给出了JVM使用的RAM总量;它实际上会用到更多的东西。一些用于JVM实现本身的可执行代码;还有用于“permgen”区域的内存,可能还有用于其他目的的内存映射缓冲区。但无论如何,Oracle的JVM都不会毫无限制地提高RAM的使用率;总是有上限的


现在,为什么Linux机箱没有更多的交换空间?它很便宜,而且可以从一开始就防止这种事情发生。

Java 6的默认最大内存是主内存的1/4。这意味着应用程序的总虚拟内存可能超过主内存和交换空间


考虑到内存成本(8GB成本低于40英镑),您应该购买更多内存。但是,另一种方法是使用更少的内存或增加交换空间,这样就不太可能耗尽内存。

Java 6的默认最大值是主内存的1/4。这意味着应用程序的总虚拟内存可能超过主内存和交换空间

考虑到内存成本(8GB成本低于40英镑),您应该购买更多内存。但是,另一种方法是使用更少的内存或增加交换空间,这样就不太可能耗尽内存