JVM--java内存模型

Posted wangdan1030

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)编译执行:强制字节码编译成机器码,直接执行机器码,运行时编译,并且编译后性能有数量级的提升。


以上是关于JVM--java内存模型的主要内容,如果未能解决你的问题,请参考以下文章

「JAVA」Java基础之堆栈方法区类加载器——JVM内存模型分析

JVM(Java虚拟机)详解(JVM 内存模型堆GC直接内存性能调优)

java内存结构JVM——java内存模型JMM——java对象模型JOM

java笔记JVM(java虚拟机)之内存模型和线程

jvm---java内存模型

JVM,java内存模型