jvm监测、调优

来源:互联网 发布:ping用的是什么端口 编辑:程序博客网 时间:2024/05/21 11:01

jstat命令查看系统gc运行状态

java -XX:PrintFlagsFinal查看运行参数

根据获得的运行参数调整jvm启动参数达到优化的目的


jvm主存与线程工作内存之间有读与写的同步时间,使用volatile关键字可以使线程之间共享直接从主存获取数据

由于使用了volatile关键字后,对于普通变量来说,不必再在自己线程工作栈中创建副本,所以节省了一定的栈空间,可以增大如递归等方法的深度


jvm为优化执行效率,存在指令重排现象如下

class Test {

private void stop = false;

private int i = 0;


private void changeI() {

i++;

stop = true;

 }

private void showI() {

if(stop) {

System.out.println(i);

}

}

}


ThreadA:执行changeI方法

TheradB:执行showI方法


打印出来的i有可能输出0,也有可能输出1,因为jvm不保证线程间的指令是有序的,在保证同一线程内的指令逻辑正确情况下,线程内可能先执行stop=true,再执行i++

0 0
原创粉丝点击