java的内存模型
来源:互联网 发布:马扎克数控车床编程 编辑:程序博客网 时间:2024/06/08 01:21
线程私有:程序计数器 虚拟机栈 本地方法栈
线程共享受: 堆 方法区
程序计数器 :当前线程所执行字节码的行数指示器。没有定义异常
虚拟机栈: java方法执行的内存模型,每一个java方法在执行的时候都会创建一个栈帧用来存储局部变量表、操作数栈、动态链接、方法出口等信息。
局部变量表存放了编译期可知的基本类型和引用类型,局部变量表所需的内存空间在编译期间分配完成,运行期间不会改变大小
操作数栈中存放指令执行时所需要的操作数
动态链接:每个栈帧中都包含一个该栈帧所属方法的引用
方法出口:每一个方法结束无非是正常return或者抛出了Exception并且没有catch语句,在方法执行完之后需要返回到方法被调用的位置,返回时需要在栈帧中保存一些信息,用来帮助恢复它的上层方法的执行状态。可能抛出StackOverflowError或OutOfMemoryError
本地方法栈:为native方法服务(调用非java代码写的接口时会用到native)。可能抛出StackOverflowError或OutOfMemoryError
堆:虚拟机所管理内存中最大的一块,在虚拟机启动时创建,用于存放对象实例和数组,从垃圾回收的角度看分为新生代、老年代;再细致可分为Eden、From Survivor、To Survivor空间、老年代。可能出现OutOfMemoryError
方法区:用来存储虚拟机加载的类信息、常量、静态变量、即时编译后的代码数据。垃圾回收的对象为:常量池的回收和类型的卸载。可能出现OutOfMemoryError
运行时常量池(方法区的一部分):用来存放编译期生成的各种字面量(文本字符串、声明为final的常量)和符号引用(类的全限定名、字段和方法的名称和描述符)
还有一块不属于虚拟机运行时数据区的一部分为直接内存:例如nio中使用native函数库直接分配堆外内存,然后通过堆内的引用直接操作这块内存,避免了java堆和native堆的来回复制,可能抛出OutOfMemory异常
- JAVA的内存模型
- java的内存模型
- Java的内存模型
- java的内存模型
- java的内存模型
- JMM Java的内存模型
- 谈谈java的内存模型
- Java对象的内存模型
- Java内存模型的抽象
- Java的内存模型分析
- java的线程内存模型
- Java内存模型的两张图
- java内存模型的理解
- java内存模型的理解
- java虚拟机的内存模型
- java虚拟机的内存模型
- Java对象的内存模型
- 三、Java内存模型---Java内存模型的基础
- 正则表达式
- centos6.5下查看服务器IP及修改系统的roo用户/非root用户的密码
- ssm框架——各种jar的作用(一)
- Bugly Android热更新使用指南
- ViewPager
- java的内存模型
- Ask, Attend and Answer: Exploring Question-Guided Spatial Attention for Visual Question Answering
- 2017 智慧树 文艺复兴经典名著选读答案题库
- C++中虚析构函数的作用
- 通过Java反射调用方法
- org.apache.shiro.cache.cacheException异常
- [BZOJ 1293][SCOI2009]生日礼物:单调队列
- md文件语法及目录使用
- 使用jquery获取父元素或父节点的方法