jvm-6

  1. 即时编译器(JIT)和解释器的区别:解释器将字节码转为机器码,下次遇到得重新转,JIT将一些字节码编译为机器码,并存入code cache,下次遇到同样的,直接执行,无需再次编译。JIT会根据平台差异,生成平台特定的机器码。hotspot虚拟机的原理
  2. Java内存模型(jmm)定义了一套在多线程读写共享数据时,对数据的可见性、有序性、原子性的规则
  3. java reflection,允许获取自身的信息,并且可以操作类或者对象的内部属性。一般对象的类型在编译期间就会确定下来,jvm通过在运行时候动态加载类来实现反射,此情况下对象的类型在编译期间是未知的
  4. synchronized(object){实现原子操作代码}
  5. 乐观锁和悲观锁,在java中乐观锁常用CAS(compare and swap)实现,需要修改一个对象时,会比较记录的版本和目前该对象的版本是否一致,如果一致就修改,内部实现采用轮询的方式(while true)。悲观锁常用synchronized实现,在修改的过程中会加锁防止其他访问,但此方法资源消耗大,涉及到线程核心态和用户态之间的切换
  6. 乐观锁只能保证对单个变量操作的原子性,当竞争不激烈时,使用乐观锁,悲观锁开销大,当竞争激烈时,使用悲观锁,乐观锁需要不断轮询,开销大
  7. 乐观锁存在aba问题,使用cas修改对象(值为a)时候,另一线程将对象的值修改为b,再修改为a,但是cas仍然认为它没有发生改变,所以cas方法不能仅仅根据值判断是否被修改,一个可行的方法是引入版本号,一旦修改,对象的版本号发生变更
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值