先看下hotspot的参数解析的流程
1.首先是Arguments::parse这个函数的初步解析,主要解析XX的标志
-XX:Flags= 这个标识后面指向一个具体的文件名,解析里面的各种flag然后动态的申请内存,存放到_jvm_flags_array这个指针数组里面。
-XX:+PrintVMOptions : 开启打印,所有以-XX: 开头的参数,都会打印
-XX:-PrintVMOptions :关闭XX打印
-XX:+IgnoreUnrecognizedVMOptions : 开 IgnoreUnrecognizedVMOptions
-XX:-IgnoreUnrecognizedVMOptions : 关 IgnoreUnrecognizedVMOptions
-XX:+PrintFlagsInitial : 打印所有配置参数,然后退出
-XX:+PrintFlagsWithComments : 与上面的命令类似,不同的是本次打印,会将这个参数的说明打印出来,上面的不会
parse_each_vm_init_arg这个函数解析实现的配置,先看函数前面的实现
-Djava.class.path -Dsun.java.command -Dsun.java.launcher 如果配置不是以上三个。那么就将这个配置增加到_jvm_args_array这个数组中。
-verbose:class || -verbose 设置TraceClass跟踪 true
-verbose:gc 设置PrintGC为true
-verbose:jni 设置PrintJNIResolving 为true
上面是各种GC收集参数的配置
-Xms 初始堆的大小,也是堆的下限值
-Xmx 堆的最大值
-Xmaxf 百分比 当free space比率超过FreeRatio时,代表堆使用的比较少。则减少堆的最大值直到xms
-Xminf 百分比 当free space比率小于这个值得,代表当前内存吃紧则增加堆的上限直到最大值
-Xss 每个线程堆栈的大小
-Xoss hotspot没有分区 native和JAVA栈,这个参数不支持
-Xmaxjitcodesize
-XX:ReservedCodeCacheSize=
指定JIT编译代码的最大代码高速缓存大小,默认单位字节
K|k 代表 KB,M|m代表 M G|g 代表 G T|t代表T
-green 不支持
-native 不支持
-Xsqnopause 不支持
-Xrs Attach Listener 线程启动的时候初始化
-Xusealtsigs 信号代替
-Xoptimize 不支持
-Xint表示禁用JIT,所有字节码都被解释执行,这个模式的速度最慢的。
-Xcomp表示所有字节码都首先被编译成本地代码,然后再执行。
-Xmixed,默认模式,让JIT根据程序运行的情况,有选择地将某些代码编译成本地代码。
Xshare:dump 参数开启静态归档
Xshare:on
Xshare:auto
Xshare:off
以上三个参数是是否允许其他jvm使用已经导入的类文件
Xverify 设置字节码验证器的模式
835

被折叠的 条评论
为什么被折叠?



