JVM参数类型
1.标配参数
1)java -version
2)java -help
2.X参数
1)-Xint 解释执行
2)-Xcomp 第一次使用就编译成本地代码
3)-Xmixed 混合模式 主要使用
当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。
JIT编译器将字节码编译成本机机器代码。 通常javac将程序源码编译,转换成java字节码,JVM通过解释字节码将其翻译成相应的机器指令,逐条读入,逐条解释翻译。
非常显然,经过解释运行,其运行速度必定会比可运行的二进制字节码程序慢。为了提高运行速度,引入了JIT技术。 在执行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术,能够接近纯编译技术。
3.XX参数
1)boolean类型
公式:-XX:+或者-某个属性值 打印GC处理日志(PrintGCDetails)
+ 表示开启
- 表示关闭
2)kv设值类型
公式:-XX:属性值key=属性值value
-XX:MaxTenuringThreshold=30 默认的活过15岁进入养老区的参数设置
3)参数查看命令
-XX:+PrintFlagsInitial : 查看默认参数设置
-XX:+PrintFlagsFinal : 最终的参数设置
4)jps命令 :
jps -l 得到进程号
jinfo:正在运行Java的信息
jinfo -flag PrintGCDetails 进程号:代表的意思是查看某个Java进程关于打印垃圾回收的机制
java -XX:+PrintCommandLineFlags -version 可以查看垃圾回收器
5)-Xms -Xmx 如何解释这两个参数
-Xms:-XX:InitialHeapSize
-Xmx:-XX:MaxHeapSize
6)自动触发垃圾回收(Java代码中)
Runtime.getRuntime().totalMemory() Runtime.getRuntime().maxMemory()
4.简单参数调优
-Xms | 设置初始分配大小,默认为物理内存的 1/64 |
---|---|
-Xmx | 最大分配内存,默认为物理内存的 1/4 |
-XX:+PrintGCDetails | 输出详细的GC处理日志 |
EXP:-Xmx1024m -Xms1024m -XX:+PrintGCDetails
String str = "hello"; while(true){ str += str + new Random().nextInt(88888888); }
JVM在GC 的时候,并非每次都对上面三个内存一起回收,大部分回收的指的是新生代。
按照回收区域分为两种:普通GC(Minor GC)(新生代)和全局GC(Major GC)(老年代)
= 和:=的区别
1. `=`:`=`用于指定JVM参数的值,如`-Xmx=512m`表示将最大堆内存设置为512MB。`=`是通用的赋值符号,用于给变量赋值,表示将右侧的值赋给左侧的变量。
2. `:=`:`:=`是Shell语言或命令行工具中的符号,不是JVM参数语法中使用的。在Shell中,`:=`是用于定义和赋值变量的符号。例如,`VAR:=value`表示将`value`赋给`VAR`变量。
所以,在JVM参数类型中,并没有使用`:=`这个符号,只有`=`用于赋值。