- 博客(3)
- 收藏
- 关注
原创 JVM内存模型——虚拟机栈
描述的是Java方法执行的内存模型,用于存储局部变量表(主要保存函数的参数以及局部的变量信息)、操作数栈、动态链接(反射机制就是一种实现)、方法出口等。随线程的启动而产生,线程的结束而消亡。局部变量分为两种情况,对于基本类型,会直接在栈上分配;如果是引用类型,对象会在堆中分配,相应的引用会在栈上(并不是绝对的,逃逸分析正是针对引用类型,如果小对象逃逸的情况不成立,会发生栈上分配)。栈帧是jav...
2019-12-17 19:31:54 186
原创 jvm内存模型——方法区
在堆上分配,但为了和堆进行区分,又称为非堆。用于存放已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据,又被称为非堆。HotSVM针对该区域也进行GC,主要是常量回收以及类,也属于堆,堆中的永久区。字符串常量、静态变量在jdk7后移到了堆中。在jdk7之前,方法区位于永久代中;jdk7中,方法区的字符串常量、运行时常量池、静态变量移动到了堆中;jdk8中,方法区移动到和堆不相关的新的本...
2019-12-10 16:24:52 88
原创 JVM内存模型——程序计数器
程序计数器又称为PC寄存器,是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器(实际是指令的偏移地址。在CPU中PC寄存器存放的是下一条指令地址,在JVM中存放的是正在执行的指令地址)。程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,故该区域为线程私有的内存。当执行的是JVM的方法时,则...
2019-12-10 16:24:30 234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人