深入浅出JVM(一):运行时数据区域

程序计数器
- 线程私有
- 指向了正在执行的虚拟机字节码指令的地址;如果是本地方法,数值为空
- 没有 OutOfMemoryError 错误的区域
Java虚拟机栈
- 线程私有;
- 生命周期与线程相同;
- 代表着 Java 方法执行的内存模型:每个方法执行时的同时会创建一个栈帧(Stack Frame)用于存放局部比量表、操作数栈、动态链接、方法出口等信息。
- 每个方法从调用到执行完毕的过程,对应着每一个栈帧在虚拟机栈中入栈到出栈的过程。
- 如果线程请求的栈深度大于虚拟机允许的深度,跑出 StackOverflowError 异常;无法申请到足够的内存,抛出 OutOfMemoryError 错误。
本地方法栈
- 线程私有;
- 和 Java 虚拟机栈类似,但是是为 Native 方法服务。
Java 堆
- 线程共享;
- Java 虚拟机中内存最大的一块;
- 惟一的作用是存放对象实例:所有的对象实例以及数组都要在堆上分配;
- 是垃圾收集器的主要区域。详细区分的话,可以分为新生代和老年代,再细致的话,可以分为 Eden 空间、 From Surivor 空间、 To Surivor 空间;
- Java 堆可以处于物理上不连续的内存空间中,只要逻辑是连续的即可。 主流的虚拟机通过 -Xms 和-Xmx控制;
- 如果堆中没有内存完成实例分配,并且堆无法再拓展时,抛出 OutOfMemoryError 错误。
方法区
- 线程共享;
- 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;
- 已被称为 Non-Heap;
- 有时候被称为永久带,原因:HotSpot 虚拟机将GC分带收集拓展至方法区;
方法区内存无法满足内存分配需求时,抛出 OutOfMemoryError 错误。
####运行时常量池
- 方法区的一部分;
- 存放编译期产生的各种字面量和符号引用;
- OOM 报错和方法区一致。
深入浅出JVM(一):运行时数据区域的更多相关文章
- JVM<一>----------运行时数据区域
参考:1.JVM Specification: http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.5 2.< ...
- JVM学习-运行时数据区域
目录 前言 运行时数据区 程序计数器 Java虚拟机栈 局部变量表 基础数据类型 对象引用 returnAddress 操作数栈 动态链接 方法返回地址 Java堆 方法区 类型信息 字段描述符 方法 ...
- JVM学习笔记:Java运行时数据区域
JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途.创建和销毁时间.根据<Java虚拟机规范>,JVM包括下列几个运行时数据区域,如下图所示: 其中红色部分是线程私 ...
- 一. JVM发展史,运行时数据区域,四大引用
一.JVM的出现 JVM将字节码解释成不同os下的机器指令,有了jvm,java语言在不同平台上运行时不需要重新编译 虚拟机发展史 (1)Sun Classic classic jvm要么采用纯解释器 ...
- JVM运行时数据区域
上面已经聊过JVM是什么东东,也谈过了JVM内存的垃圾回收机制.这一篇博客我们来聊聊JVM运行时数据区域. JVM运行时数据区域由5块部分组成,分别是堆,方法区,栈,本地方法栈,以及程序计数器组成. ...
- JVM 内存区域 (运行时数据区域)
JVM 内存区域 (运行时数据区域) 链接:https://www.jianshu.com/p/ec479baf4d06 运行时数据区域 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内 ...
- 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...
- [jvm]运行时数据区域详解
了解虚拟机是怎么使用内存的,有助于我们解决和排查内存泄漏和溢出方面的问题.详解java虚拟机内存的各个区域,分析这些区域的作用服务对象以及可能发生的问题. 一.运行时数据区域 java虚拟机在执行ja ...
- JVM学习笔记(1)--运行时数据区域
运行时数据区域 相对于c,c++.程序设计时,java并不需要手动释放或者创建内存用于存放程序,这的确使得java开发变得容易和轻松,一旦有一天出现了内存泄漏或者内存溢出的问题,如果不了解JVM虚拟机 ...
- JVM 运行时数据区域划分
目录 前言 什么是JVM JRE/JDK/JVM是什么关系 JVM执行程序的过程 JVM的生命周期 JVM垃圾回收 JVM的内存区域划分 一.运行时数据区包括哪几部分? 二.运行时数据区的每部分到底存 ...
随机推荐
- [后端]gitlab之gitlab-ci自动部署
转发:https://www.jianshu.com/p/df433633816b 简介 gitlab-ci全称是gitlab continuous integration的意思,也就是持续集成.中心 ...
- 关于System.BadImageFormatException
什么是BadImageFormatException BadImageFormatException是当动态链接库 (DLL) 或可执行程序的文件映像无效时引发的异常. 可能的原因 如果动态链接库 ( ...
- JMeter学习2
JMeter学习(四)参数化 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进行参数化 ...
- python实现:判断某一天是那一年中的第几天
方法1:先判断是否是闰年,然后再利用求和,得出某一天是第几天 # 方法1:low版 def func1(year, month, day): # 分别创建平年,闰年的月份天数列表(注意列表下标从0开始 ...
- mysql 组合聚集函数
mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...
- python 之实现断点下载与下载进度条
一.效果图 二.进度条代码 __author__ = 'Yang' import os import time from threading import Thread '''下载进度条''' cla ...
- ubuntu之路——day17.2 RGB图像的卷积、多个filter的输出、单个卷积层的标记方法
和单层图像的卷积类似,只需要对每一个filter构成的三层立方体上的每一个数字与原图像对应位置的数字相乘相加求和即可. 在这个时候可以分别设置filter的R.G.B三层,可以同时检测纵向或横向边缘, ...
- ArcGIS 要素类整体平移工具-arcgis/arcpy/模型构建器案例实习教程
ArcGIS 要素类整体平移工具-arcgis/arcpy/模型构建器案例实习教程 联系方式:谢老师,135-4855_4328,xiexiaokui#qq.com 目的:对整个要素类,按指定偏移距离 ...
- k8s 传参给docker env command、args和dockerfile中的entrypoint、cmd之间的关系
[k8s]args指令案例-彻底理解docker entrypoint 需求: 搞个镜像,可以运行java -jar xxx.jar包,xxx.jar包名称要用参数传 思路1: 打对应运行ja ...
- Python3基础 yield send 变量名= yield i
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...