JVM--java内存模型

   大家可能看到这篇的内容,java的内存模型认为与JVM没有关系,其实不是,所有的程序运行都是在内存中运行的,我们这里所得java内存模型其实就是方法运行过程中在JVM内存空间内是怎么分配的。

    1.首先需要强调的一点就是每个线程都有一个工作内存,这个工作内存和主存是相互独立的。此外工作内存中存放着主存变量的值的拷贝。运行情况如下:

 

    2.内存有他自己的特性:

      (1)可见性:一个新城修改了变量,其他线程可以立即知道。

      (2)有序性:一个线程中,所有的指令和操作都是有序的。线程之外操作是无序的,可能存在指令重排。但是指令重排破坏了线程间的有序性。

    3.指令重排的基本原则:

       (1)程序顺序原则:一个线程内必须保证语义的串行性

       (2)volatile:volatile变量的写必须先发生于读

       (3)锁规则:unlock必须发生在lock之前

       (4)传递性,如果A先于B,B先于C,那么A的运行一定在C前面

       (5)线程的start方法先于它的任何一个动作

       (6)线程的所有操作都先于Thread.join()

       (7)线程的中断(interrupt())先于被中断线程的代码

       (8)对象的构造区函数执行结束先于finalize方法

    4. addcode字节码运行的两种方式

      (1)解释执行:解释一句执行一句

      (2)编译执行:强制字节码编译成机器码,直接执行机器码,运行时编译,并且编译后性能有数量级的提升。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值