jvm监测、调优

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值