目录
虚拟机学习系列 - 1 - 运行时数据区域
虚拟机学习系列 - 2 - 垃圾收集概述
虚拟机学习系列 - 3 - 垃圾收集算法
虚拟机学习系列 - 4 - 垃圾收集器
虚拟机学习系列 - 5 - 内存分配与回收策略
虚拟机学习系列 - 6 - JDK工具
虚拟机学习系列 - 附 - 虚拟机参数
虚拟机学习系列 - 附 - OQL(对象查询语言)
之前很少关注过jvm及其相关支持
由于最近项目总是出现OutOfMemory,很无奈,android分给每个应用的内存有限
所以打算看看GC相关知识,索性就把虚拟机的知识也一起看了吧
希望自己能提升一下
刚开始接触,肯定会有不少遗漏,希望大家指点并提出建议
有些我觉得对我工作用处暂时不是很大的知识可能不会整理在内
毕竟整理的过于全面就和抄写一遍书本没啥区别了
第一本书选为:深入理解java虚拟机 - 周志明
运行时数据区域的知识之前整理过一点,用的是xmind
下面就把整理的内容截图贴上,顺便再补充些说明
图片较大,所以我就把它咔嚓了
运行时数据区域可以做如下划分
(图1)
具体可分为下面几个部分
1.程序计数器
(似乎离我还有一定距离,笔记见图3)
2.java虚拟机栈
3.本地机栈
栈分为两个部分,看名字也知道区别是什么,下面以java虚拟机栈为例
生命周期:和线程相同
虚拟机栈描述的是java方法执行时的内存模型。每个方法被执行时都会创建一个栈帧,用于存储:
局部变量表
操作数栈
动态链接
方法出口
每一个方法被调用直至执行完成的过程就对应着一个栈帧在虚拟机栈从入栈到出栈的过程
栈的局部变量表:存放了编译期可知的基本数据类型和引用
在栈里有两种常见且重要的异常
StackOverFlowError:线程请求的栈深度>虚拟机所允许的深度
(大部分虚拟机都允许动态扩展,java虚拟机规范也允许固定长度)
OutOfMemory:当扩展时无法申请到足够的内存
4.java堆
java虚拟机规范规定:java堆可以处于物理上不连续的内存空间,只要逻辑上连续即可
(垃圾回收等内容在后续笔记中会整理)
5.方法区
用来储存已被虚拟机加载的类信息、常量、静态变量,即时编译器编译后的代码数据
运行时常量池:方法区一部分,编译期生成的字面量和符号引用,类加载后存放到这里
(图2)
(图3)
分享到:
相关推荐
主要给大家介绍了关于Java虚拟机运行时数据区域的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
java虚拟机运行数据区如图所示。 1、程序计数器 是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。如果线程正在执行一个java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;...
VM相关的一些内容,比如下面的这三个内容算是比较核心知识点了 运行时数据区域: 在运行时数据区里存储类Class文件元数据...类加载机制: 虚拟机首先需要把编译完成的字节码文件通过类加载器来加载到运行时数据区域
03 JVM 运行时数据区概述及线程的 PPT 重绘。讲述 Java 虚拟机 运行时数据区所处位置,结构划分,以及各个区域与线程的关系。
主要介绍了详解Java虚拟机管理的内存运行时数据区域的相关资料,需要的朋友可以参考下
第28节Java内存区域-直接内存和运行时常量池00:15:53分钟 | 第29节对象在内存中的布局-对象的创建00:21:19分钟 | 第30节探究对象的结构00:13:47分钟 | 第31节深入理解对象的访问定位00:08:01分钟 | 第32节垃圾...
第28讲 Java内存区域-直接内存和运行时常量池 00:15:53 第29讲 对象在内存中的布局-对象的创建 00:21:19 第30讲 探究对象的结构 00:13:47 第31讲 深入理解对象的访问定位 00:08:01 第32讲 垃圾回收-...
2.2.4.堆(Heap-线程共享)-运行时数据区 2.2.5.方法区/永久代(线程共享) 2.3.JVM运行时内存 2.3.1.新生代 2.3.1.1.Eden区 2.3.1.2.ServivorFrom 2.3.1.3.ServivorTo 2.3.1.4.MinorGC的过程(复制->清空->互换) 1...
2.2 运行时数据区域 2.2.1 程序计数器 2.2.2 Java虚拟机栈 2.2.3 本地方法栈 2.2.4 Java堆 2.2.5 方法区 2.2.6 运行时常量池 2.2.7 直接内存 2.3 HotSpot虚拟机对象探秘 2.3.1 对象的创建 2.3.2 对象的...
JVM是什么 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的...其中一些数据区域是在Java虚拟机启动时
与我一起学 JVM:Java 虚拟机内存组成概念前言Java 虚拟机内存划分运行时数据区域程序计数器Java 虚拟机栈局部变量表本地方法栈Java 堆方法区运行时常量池直接内存 前言 刚开始看《深入理解Java虚拟机》,文章主要就...
4. 运行时数据区 关于运行时数据官方解释:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5 4.1 堆 (heap) 堆在虚拟机中是一块共享区域, 存放 对象实例 和数组; 堆在虚拟机启动的时候...
2.2.4.堆(Heap-线程共享)-运行时数据区 23 2.2.5.方法区/永久代(线程共享) 23 2.3.JVM 运行时内存 24 2.3.1.新生代 24 2.3.1.1.Eden 区 24 2.3.1.2.ServivorFrom 24 2.3.1.3.ServivorTo 24 2.3.1.4.MinorGC 的...
当虚拟机装载类文件的时候,它解析其中的二进制数据所包含的类信息,并把它们放到方法域中;当程序运行的时候,JVM把程序初始化的所有对象置于堆上;而每个线程创建的时候,都会拥有自己的程序计数器和 Java栈,其中...
JVM 学习,包含运行数据区域,GC,JMM 等常见问题
盒装OHDSI 快速部署...部署演练视频Linux版本AWS区域代码名称发射cn-northwest-1 中国(宁夏) eu-west-1 欧盟(爱尔兰) ap-northeast-1 AP(东京) us-east-1 美国东部(弗吉尼亚北部) OHDSI组件版本OMOP通用数据
堆(Heap-线程共享)-运行时数据区,2.2.5. 方法区/永久代(线程共享)2.3. JVM 运行时内存2.3.1. 新生代.2.3.1.1. Eden区2.3.1.2. ServivorFrom..2.3.1.3. ServivorTo.2.3.1.4. MinorGC 的过程(复制->清空->互换)1: ...
第2章 Java内存区域与内存溢出异常 / 24 2.1 概述 / 24 2.2 运行时数据区域 / 25 2.2.1 程序计数器 / 25 2.2.2 Java虚拟机栈 / 26 2.2.3 本地方法栈 / 27 2.2.4 Java堆 / 27 2.2.5 方法区 / 28 2.2.6 运行...