JVM 参数
原文:https://www.studytonight.com/java-examples/jvm-parameters
JVM 参数用于配置 Java 虚拟机(JVM)。JVM 的性能取决于它的配置是否满足 Java 应用的需求。
在本教程中,我们将学习如何设置一些 JVM 参数。
堆内存
借助 Xmx 和 Xms 参数,我们可以设置应用所需的最小和最大堆大小。设置正确的堆大小会影响我们应用的性能。Xmx 用于调整最大堆大小,Xms 用于更改最小堆大小。
-Xms<heap size>[unit]
-Xmx<heap size>[unit]
单位表示内存单位,如“g”代表 GB,“m”代表 MB,依此类推。
堆内的年轻一代内存区域用于存储新创建的对象。我们也可以改变年轻一代的初始和最大规模。 XX:NewSize 调整初始尺寸, XX:MaxNewSize 设置最大尺寸。
-XX:NewSize=<young size>[unit]
-XX:MaxNewSize=<young size>[unit]
碎片帐集
为我们的应用选择合适的垃圾收集器对其性能也至关重要。JVM 提供了四种不同的垃圾收集实现。
串行垃圾收集器
–XX:+UseSerialGC
并行垃圾收集器
-XX:+UseParallelGC
垃圾收集器
-XX:+UseParNewGC
G1 垃圾收集器
XX:+UseG1GC
Java 垃圾收集日志记录
GC 日志记录用于跟踪应用的运行状况和性能。我们可以使用以下参数记录垃圾收集活动。
-XX:+UseGCLogFileRotation
-XX:NumberOfGCLogFiles=<number of log files>
-XX:GCLogFileSize=<file size><unit>
-Xloggc:[path to gc.log file]
- 使用日志文件旋转启用日志旋转。它通常用于处理长时间运行的应用的大型日志文件。
- number of clogfiles调整循环日志时要使用的日志文件的最大数量。它的默认值是 1。
- GCLogFileSize 定义日志文件的最大大小。
- loggc 表示创建的日志文件的位置。
32/64 位
如果有 32 位和 64 位软件包,Java 虚拟机会自动选择 32 位环境。我们可以通过使用以下参数从 32 位更改为 64 位。
-d<bit>
被遗忘
当 JVM 无法为新对象分配内存,并且垃圾收集器无法清除任何空间时,就会出现内存不足错误。我们可以使用一些 JVM 参数来捕获文件中的堆转储。
- heapdumponetomemoryerror通知 JVM 捕获文件中的堆转储。
- HeapDumpPath 表示我们要捕获堆转储的文件的路径。
- OnTofMemoryerror设置遇到此错误时要执行的操作。
- UseGCOverheadLimit 对 JVM 可以花费在垃圾收集上的时间进行限制。
JVM 的其他常用参数
- -服务器启用 Java HotSpot 服务器虚拟机。请注意,对于 64 位环境,默认情况下使用此选项。
- -XX:+usestringduplication通过维护单个全局字符数组来优化存储重复字符串所使用的内存。
- -XX:+usewpsynchronization使用轻量进程同步(LWP)代替普通线程同步。
- -XX:MaxHeapFreeRatio 设置垃圾收集后空闲堆空间的最大比率。它避免了收缩。
- -XX:minheafreeratio设置垃圾收集后空闲堆空间的最小比率。它避免了膨胀。
- -XX:生存空间设置伊甸园与生存空间的比例。
- -XX:+UseStringCache 允许缓存字符串池中最常见的字符串。
- -XX:+UseCompressedStrings允许使用字节数组以纯 ASCII 格式存储字符串。
- -XX:+OptimizeStringConcat优化字符串的连接操作。
摘要
在本教程中,我们了解了一些关键的 JVM 参数。这些参数配置了 Java 虚拟机,并提高了我们应用的整体性能。我们也可以将它们用于调试目的。