运行时数据区
刮瓜蛙
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
方法区与常量池(静态常量池与运行时常量池)
方法区方法区与Java堆一样,是各个线程共享的内存区域,它用于存储已经被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。他也有一个别名为"非堆",目的是与Java堆区分开来。方法区和永久代在JDK8以前,很多把方法区和永久代混为一谈,本质上这两者并不是等价的,仅仅是因为当时的HotSpot虚拟机设计团队选择吧收集器的分代设计扩展至方法区,或者说使用永久代来实现方法区而已,这样使得HotSpot的垃圾收集器能够像管理Java堆一样管理方法区的内存,省去专门为方法区编写内存管理的原创 2020-09-12 21:03:48 · 907 阅读 · 1 评论 -
Java堆
Java堆特点:Java堆是虚拟机所管理的内存中最大的一块内存区域他是所有线程共享的内存区域它的生命周期会随着虚拟机的启动而创建,关闭而销毁在Java世界中,几乎所有的对象实例都在这里分配内存它被实现的时候,可以被定义为固定大小的,也可以被定义为可扩展的,当前主流都是可扩展的(通过**-XMS和-XMX**设定)它可以分为很多区域,比如新生代、老年代、永久代,无论分多少个区域其存储的对象只会是实例对象,而创建这些区域的目的是为了更好的进行内存回收垃圾收集器Java堆也是垃圾收集器管理的原创 2020-09-12 19:56:16 · 219 阅读 · 0 评论 -
Java虚拟机栈和本地方法栈
Java虚拟机栈Java虚拟机栈它也是线程私有的一块内存区域,所以生命周期自然和线程相同。每个方法在执行的时候,Java虚拟机栈都会同步生成一个栈帧,然后再将这个栈帧压入Java虚拟机栈中,所以Java虚拟机栈主要保存的就是这个栈帧。栈是一种先进后出的数据结构,所以Java虚拟机栈他只会先处理位于栈顶的栈帧,而位于栈底的栈帧(也就是最先入栈的栈帧)只会等待其上面的栈帧处理完毕了才会被处理。当一个方法从调用到执行完毕,就意味着一个栈帧从Java虚拟机栈中从入栈到出栈的过程。栈帧栈帧主要保存局部变原创 2020-09-12 19:35:38 · 2965 阅读 · 5 评论 -
程序计数器
程序计数器在运行时数据区中,它是线程隔离的一块内存区域,即它是线程私有的内存区域同时它是一块很小的内存区域,可以看做当前线程所执行字节码的行号指示器。即,程序计数器就是用于存放下一条指令所在单元的地址的地方字节码指示器Java虚拟机通过改变计数器的值来选取需要执行的字节码指令,所以它也是程序控制流的指示器,自然Java程序中的分支、循环、跳转、异常处理、线程恢复等都需要依赖这个计数器来完成。例子,线程恢复Java多线程是通过多个线程之间的轮流切换、分配处理器执行时间的方式实现的。在任何一个确定原创 2020-09-12 14:05:27 · 285 阅读 · 0 评论
分享