jvm组成区域及个区域
来源:互联网 发布:58同城合肥找美工 编辑:程序博客网 时间:2024/05/17 03:04
在java开发中,jvm负责内存分配,对于开发者而已很省事,但是当你程序存在内存溢出或者内存泄漏时,你就很难定位到具体原因。
1. jvm的组成区域:方法区 ,堆,虚拟机栈,本地方法栈,程序计数器pc
方法区和堆是线程共享的,其余不是
2.程序计数器pc:是一块较小的内存空间,用于记录执行的位置。由于jvm的多线程是通过线程交替和执行时间决定的,所以在交替的时候,必要pc判断执行的 位置。每个线程都需要独立存储的pc,pc也叫线程私有的内存。是唯一不会有outOfmemeoryError 的区域。
3.堆:线程共享的区域,是jvm中最大的一块内存区域,基本的对象实例和数组都在堆上
分配,由于编译器和逃逸分析技术的发展,所以的对象实例都在堆上分配变的不那
绝对了。
堆是垃圾回收器管理的主要的区域,所以也叫gc堆。在gc堆中可分为新生代,老年
代。堆的物理区域可以不连续,逻辑上联系即可。随说是共享,但是可以有多划分
出多个线程私有的缓冲区。
会有outOfMemeoryErro
4.虚拟机栈: 线程私有,主要在程序执行过程中,分配局部变量存储区,变量存储区可
可叫局部变量表。局部变量存放编译期各种数据。
long & double 64位 占2个局部变量空间,其余的都1个。
如果程序请求的栈深度深于jvm允许深度:StackOverFlowErro.
现在的jvm都可以动态扩展,若扩展还不够:outOfMemoryErro.。
5.本地方法栈:线程私有,本地方法栈跟虚拟机栈功能相似,本地方法栈主要是给native
方法执行分配空间,而虚拟机栈主要是给java语言的程序执行分配空间。
会有StackOverFlowErro 和outOfMeMeoryErro。
6.方法区:线程共享,主要是给类信息,常量,静态变量分配存储控制。有的虚拟机把方法区
直接划分为堆的逻辑部分,但其他的没有则叫非堆用于区分。方法区极小不回收,主
要是,对类信息回收的要求比较苛刻。主要的回收目标是常量和类型。有outOfMemeoryErro
注,运行时常量池 是方法区的一部分。
- jvm组成区域及个区域
- JVM内存区域组成
- JVM内存区域组成
- 解析JVM内存区域组成
- 【JVM】内存区域及区域异常
- 深入解析JVM内存区域组成
- 深入解析JVM内存区域组成
- 深入解析JVM内存区域组成
- JVM内存区域及作用
- jvm区域
- JAVA内存管理【1.3 JVM的内存区域组成】
- JVM----内存区域及溢出异常
- JVM运行时数据区域及GC
- JVM内存区域分区及OOM分析
- JVM内存区域分区及OOM分析
- JVM运行时数据区域及GC
- JVM运行时数据区域及GC
- JVM运行时数据区域及GC
- window下phpstudy的nginx配置虚拟主机
- 解决linu apt-get update 问题
- vue前端UI库
- PhpStorm中快捷键总结,附详细使用说明
- c#写服务、exe 可执行程序、windows锁屏的过程中遇到的问题
- jvm组成区域及个区域
- 重装 11G(11.2.0.4) 组件总结(手工建库组件的安装顺序)
- 9.NoSQL数据库第1部分
- 83. Remove Duplicates from Sorted List
- 安装FastDFS问题记录
- eclipse安装Color Theme
- 第五章 Fork/Join Framework(Fork/join 框架)【下】
- yii2 RESTful 接口 api -1 : 接口的基本配置
- SinoDB在Linux系统上的安装配置