学习JVM:内存划分

来源:互联网 发布:python interitems 编辑:程序博客网 时间:2024/05/01 11:10

JVM内存划分:

程序计数器+java栈+java堆+本地方法栈+方法区

程序计数器:每个线程都有自己的程序计数器,记录当前运行的字节码地址,运行本地方法时为Null;线程切换时保存改状态以便切回来时能继续执行

java栈:java栈存放局部变量,对象引用,returnAddress类型(指向一条字节码地址),栈帧(方法的信息);方法运行时会创建栈帧,栈帧包括局部变量表、操作栈、动态链接(对独立文件的引用)、方法出口;方法完成时栈帧出栈。

局部变量表在编译后确定大小,保持不变。

java堆:存放对象实例,但并不等同于对象实例全部放在java堆中:JVM有标量替换(将复杂对象分解成多个基本对象(可看作标量)并跟踪其状态)等优化过程。

方法区:存放类型信息,静态变量,常量池

本地方法栈:和java栈类似,但服务于本地方法。

0 0
原创粉丝点击