jvm 使用

0 阅读3分钟

jvm 使用

如何查看

jdk自带命令

参看: smartan123.github.io/book/?file=…

server or client

可以通过-server或-client设置jvm的运行参数。 它们的区别是:

  • Server VM的初始堆空间会大一些,默认使用的是并行垃圾回收器,启动慢运行快。

  • Client VM相对来讲会保守一些,初始堆空间会小一些,使用串行的垃圾回收器,它 的目标是为了让JVM的启动速度更快,但运行速度会比Serverm模式慢些。

  • JVM在启动的时候会根据硬件和操作系统自动选择使用Server还是Client类型的 JVM。

  • 32位操作系统:

    • 如果是Windows系统,不论硬件配置如何,都默认使用Client类型的JVM。
    • 如果是其他操作系统上,机器配置有2GB以上的内存同时有2个以上CPU的话默 认使用server模式,否则使用client模式。
  • 64位操作系统

    • 只有server类型,不支持client类型。
  ~  java -version            
 java version "1.8.0_131"
 Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
 Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

参数

-Xaaaaa

jvm的-X参数是非标准参数,在不同版本的jvm中,参数可能会有所不同,可以通过java -X查看非标准参数。

-XX:aaaaa

-XX参数也是非标准参数,主要用于jvm的调优和debug操作。

-XX参数的使用有2种方式,一种是boolean类型,一种是非boolean类型:

  • boolean类型

    • 格式:-XX:[±]
    • 如:-XX:+DisableExplicitGC 表示禁用手动调用gc操作,也就是说调用 System.gc()无效
  • 非boolean类型

    • 格式:-XX:
    • 如:-XX:NewRatio=1 表示新生代和老年代的比值

-Xms与-Xmx参数

-Xms与-Xmx分别是设置jvm的堆内存的初始大小和最大大小。

-Xmx2048m:等价于-XX:MaxHeapSize,设置JVM最大堆内存为2048M。

-Xms512m:等价于-XX:InitialHeapSize,设置JVM初始堆内存为512M。 适当的调整jvm的内存大小,可以充分利用服务器资源,让程序跑的更快。

jinfo查看java 应用参数

 jinfo -flags  pid
  ~/Soft/java/jdk-17.0.1.jdk/Contents/Home/bin  ./jinfo -flags  26855
 VM Flags:
 -XX:-BytecodeVerificationLocal -XX:-BytecodeVerificationRemote -XX:CICompilerCount=12 -XX:InitialHeapSize=1073741824 -XX:+ManagementServer -XX:MaxHeapSize=17179869184 -XX:MaxNewSize=5726273536 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=357564416 -XX:OldSize=716177408 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:TieredStopAtLevel=1 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC 

jstat查看gc 情况

 jstat -gc 3694

jmap查看内存情况

 jmap -heap 3694     # 查看堆对象

内存使用情况dump到文件中

 jmap -dump:format=b,file=myheapdump.hprof 27168
nat工具分析

jstack

jvisualvm 工具分析

垃圾回收

G1

与其他的垃圾回收有很大的区别

image-20260206151102444

-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:./logs/gc.log

生成 gc 溢出的文件,使用工具进行查看

arthas

实践应用: blog.csdn.net/lydms/artic…