[英]Which arguments stand for what in JVM memory options?
有很多JVM参数影响JVM的内存使用情况,如-Xms, -Xmx, -Xns, -XX:MaxPermSize...
OutOfMemoryError
, StackOverflowError
...)? 我找不到一个好的备忘单 - 让我们在这里创建一个。
-Xms:
此选项设置初始和最小Java堆大小。
-Xmx:
此选项设置最大Java堆大小。 Java堆(“堆”)是内存的一部分,其中内存块分配给对象并在垃圾回收期间释放。
-XX:PermSize:
-XX:MaxPermSize:
用于设置永久生成的大小。 永久空间是存储类,方法,内化字符串和VM使用的类似对象的地方,永远不会被释放(因此名称)。
-Xss:
设置线程堆栈大小。 线程堆栈是为每个Java线程分配的内存区域,供内部使用。 这是线程存储其本地执行状态的位置。
-Xns:
设置托儿所的大小。 当使用分代垃圾收集模型时,JRockit JVM使用托儿所,也就是说,当动态垃圾收集器确定应该使用分代垃圾收集模型时或者静态分代并发垃圾收集器(-Xgc:gencon)已经使用时选择。 您还可以在运行动态垃圾收集器(-XgcPrio)时使用-Xns设置静态托儿所大小。
如果你得到java.lang.OutOfMemoryError: Java heap space
比改变-Xmx
和-Xms
的值。
如果你得到java.lang.OutOfMemoryError: PermGen space
不是尝试增加- XX:MaxPermSize
值。
如果你得到java.lang.StackOverflowError
不是尝试增加-Xss
值。 通过增加堆栈大小可能会有所帮助,但您也应该查看代码。
有数百种JVM选项可供选择。 基本上它们分为三种类型:
几个标准选项列表:[查看完整列表执行命令“java”,没有任何选项]
-client to select the "client" VM
-server to select the "server" VM
-cp <class search path of directories and zip/jar files>
-classpath <class search path of directories and zip/jar files>
A ; separated list of directories, JAR archives,
and ZIP archives to search for class files.
-D<name>=<value>
set a system property
-version print product version and exit
-showversion print product version and continue
-X print help on non-standard options`
一些非标准X选项列表:[查看完整列表执行命令“java -X”]
-Xincgc enable incremental garbage collection
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
-Xprof output cpu profiling data
-Xmixed mixed mode execution (default)
-Xint interpreted mode execution only
少数非标准XX选项列表:[ 此处提供完整列表]
-XX:InitialHeapSize=<size> set initial Java heap size. Same as -Xms<size>.
-XX:MaxHeapSize=<size> set maximum Java heap size. Same as -Xmx<size>.
-XX:+PrintFlagsFinal prints all JVM options passed.
-XX:+UnlockDiagnosticVMOptions opens up lot more VM options.
如果您想增强您对JVM选项的了解,请参阅此博客 。 链接只是第8部分中的第1部分。查找并阅读其他部分。
-Xss:堆栈大小。
用于设置堆栈的大小。 堆栈值仅存在于它们创建的函数范围内。一旦函数返回,它们将被丢弃。
耗尽堆栈空间的最简单方法是递归太深。
-Xms,-Xmx:最小和最大堆大小。
用于设置堆的大小。 堆是您分配对象的位置。 对象一直存在,直到它们被垃圾收集。
耗尽堆空间的最简单方法是分配大量的东西。
-XX:MaxPermSize:永久生成。
永久生成是特殊的,因为它包含虚拟机所需的数据,以描述在Java语言级别上没有等价的对象。 例如,描述类和方法的对象存储在永久代中。
如果你以某种方式泄漏对动态加载的类的引用,通常会耗尽permgen空间。 这特别困扰了一些网络容器。
阅读JVM选项说明 。 以下是摘录:
java.lang.OutOfMemoryError: Java heap space
错误,您应该增加-Xmx
值。 -XX:PermSize
和-XX:MaxPermSize
不需要调整,但如果您看到java.lang.OutOfMemoryError: PermGen space
事件通常可以增加这些值。 -XX:MaxJavaStackTraceDepth
- 指定在抛出StackOverflowError
之前抛出的错误或异常的堆栈跟踪的条目数。 因此,如果您正在处理大量堆栈跟踪,则可以使用此选项在溢出之前增加允许的命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.