JVM 参数

原文:https://www.studytonight.com/java-examples/jvm-parameters

JVM 参数用于配置 Java 虚拟机(JVM)。JVM 的性能取决于它的配置是否满足 Java 应用的需求。

在本教程中,我们将学习如何设置一些 JVM 参数。

堆内存

借助 XmxXms 参数,我们可以设置应用所需的最小和最大堆大小。设置正确的堆大小会影响我们应用的性能。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 虚拟机,并提高了我们应用的整体性能。我们也可以将它们用于调试目的。