Java Memory Model
来源:互联网 发布:java从网页抓取数据 编辑:程序博客网 时间:2024/06/10 05:06
在程序运行时,每运行一个Java程序会启动一个JVM(Java Virtual Machine)实例。JVM中存在很多线程,这些线程分为两种:daemon和non-daemon。例如,garbage collection线程就是daemon类型的。JVM会一直运行,直至所有non-daemon类型的线程结束。
注意:用户编写的程序,可以将其创建的线程标记为daemon类型的
Java的内存模型
JVM在运行程序时,会将内存划分成以下几个部分:method are(方法区)、heap(堆)、Java stacks(栈)、PC Register(程序计数器)和native method stacks(本地方法栈),如下图所示:
Method Area:JVM从class文件中加载类,并将这些类的信息进行解析,将解析的信息保存到Method Area中。Method Area中还包含一个运行时常量池(runtime constant pool)。在字节码文件中(class文件对应的byte code)有常量池(Constant Pool Table),用于存储编译器产生的字面量和符号引用。每个字节码文件中的常量池在类被加载后,都会存储到方法区中。值得注意的是,运行时产生的新常量也可以被放入常量池中,比如 String 类中的 intern() 方法产生的常量。
Heap: java类所有的实例(instance)都保存到heap中,即所有通过new产生的object都保存到heap上。
Java stacks: java stacks保存stack frames,没调用一个方法会在stack上产生一个新的frame,frame保存了局部变量、返回地址等不同信息。注意java程序运行过程中产生的中间结果也保存在stack当中。
Pc registers:程序计数器,存储着下一条指令的地址。
注意在这些内存区域当中有些是被所有线程所共享的,有些是线程私有的,其中Method area和heap为所有线程共享,其他三种每个线程都有自己独立的内存区域。
- JAVA Memory Model
- The Java Memory Model
- Java Memory Model
- Java Memory Model基础
- Java Memory Model
- Java Memory Model基础
- java-memory-model
- Java Memory Model
- Java Memory Model
- Understanding Java Memory Model
- Java Memory Model基础
- java memory model
- Java Memory Model--学习小结
- Java Memory Model & multithread-programming
- Java Memory Model的介绍
- java内存模型(Java Memory Model)
- JAVA内存模型(Java Memory Model)
- JAVA内存模型(Java Memory Model)
- Android之TabHost与ListView结合应用
- 二分法查找的JAVA程序
- ctags的安装使用
- mjpgstream
- java网页数据采集(中篇-数据存储)
- Java Memory Model
- 声明并测试一个复数类,其方法包括复数的加减乘运算
- 黑马程序员——高新技术(二)
- Java volatile
- 游戏的帧率与屏幕的刷新率
- Unity3D中的shader进阶
- 程序员应该了解的面向对象七大设计原则
- Java內隐类(Java Inner Class)
- StarUML初学知识(类视图为主)