Jvm基础(1)-Java运行时数据区】的更多相关文章

最近在看<深入理解Java虚拟机>,里面讲到了Java运行时数据区,这是Jvm基本知识,把读书笔记记录在此.这些知识属于常识,都能查到的,如果我有理解不对的地方,还请指出. 首先把图贴上来,图来自JVM Runtime Data Areas(运行时数据区),感谢. 由上图可知,Java运行时数据区域包括程序计数器.Java虚拟机栈.本地方法栈.Java堆.方法区. 1. 程序计数器 程序计数器用来记录下一条字节码指令,因为CPU是要轮转的,在切换回来之后,Java能够找到下一条要执行的指令.如…
1. 核心概述 1.1 堆概述 一个进程对应一个jvm实例,一个运行时数据区,又包含多个线程,这些线程共享了方法区和堆,每个线程包含了程序计数器.本地方法栈和虚拟机栈. 一个jvm实例只存在一个堆内存,堆也是java内存管理的核心区域 |  配置jvm及查看jvm进程 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了.是JVM管理的最大一块内存空间 | 堆内存的大小是可以调节的 <Java虚拟机规范>规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的 所有的线程…
写在前面的话:本文是在观看尚硅谷JVM教程后,整理的学习笔记.其观看地址如下:尚硅谷2020最新版宋红康JVM教程 一.运行时数据区 我们在编写Java程序时,使用JVM的流程主要如下所示: 虚拟机在执行Java程序时,会把它所管理的内存划分为不同的数据区域,即运行时数据区.有些数据区域是线程共享的,即这些区域会随着虚拟机的启动而创建,随着虚拟机的关闭而销毁.而另一些区域则是与线程对应,属于线程私有的.这些区域会随着线程开始而创建,随着线程的结束而销毁. 具体的划分如下: 多个线程共享的:堆.方…
作为一个 Java 为主语言的程序员,我偶尔也需要 用 C/C++ 写程序,在使用时让我很烦恼的一件事情就是需要对 new 出来的对象进行 delete/free 操作,我老是担心忘了这件事情,从而导致内存泄漏或溢出.所以,使用Java让我感觉很爽.但理解 Java 的内存区域是很有必要的.对于 Java 的内存,我们大多数的时候都只是在说堆内存(Heap)和栈内存(Stack),但 Java 内存区域的划分实际上更细,了解它可以让我们进一步的去了解这门语言. 运行时数据区 以下为 Java 运…
1. JVM架构图 Java虚拟机主要分为五大模块:类装载器子系统.运行时数据区.执行引擎.本地方法接口和垃圾收集模块. 2. JDK1.7内存模型-运行时数据区域 根据<Java 虚拟机规范(Java SE 7 版)>规定,Java 虚拟机所管理的内存如下图所示. 1-3为线程私有,4-5为线程共享 1.程序计数器:为了线程切换后能恢复到正确的执行位置.线程私有2.Java虚拟机栈:虚拟机栈描述的是Java方法执行的内存模型:方法被调用时创建栈帧-->局部变量表->局部变量.对象…
写在前面的话:本文是在观看尚硅谷JVM教程后,整理的学习笔记.其观看地址如下:尚硅谷2020最新版宋红康JVM教程 一.堆的概述 JVM的运行时数据区如下: 一个Java程序运行起来对应着一个进程(操作系统的进程),一个进程对应着一个JVM实例.而一个JVM实例就对应着一个运行时数据区,则其中就包含着一个堆空间.一个进程中的多个线程共享这个堆空间. 几乎所有的对象实例和数组都在堆上分配内存(并非所有的对象都是在堆上分配内存,后面会提到这一特殊情况),即堆空间存储着绝大部分的对象.虚拟机栈中的栈帧…
运行时数据区是指对 JVM 运行过程中涉及到的内存根据功能.目的进行的划分,而内存模型可以理解为对内存进行存取操作的过程定义.总是有人望文生义的将前者描述为 "Java 内存模型",最近在阅读<深入理解 Java 虚拟机>之后对二者加深了部分理解,于是写一篇相关内容的学习总结. 运行时数据区 <Java 虚拟机规范>定义中,由 JVM 管理的内存区域分为以下几个运行时数据区域: flowchart LR subgraph 运行时数据区 subgraph 线程私有…
目录 1. 概述 2. Java内存结构 3. 程序计数器 4. Java虚拟机栈 5. 本地方法栈 6. 堆 7. 方法区 8. 运行时常量池 9. 直接内存 10. 总结 1. 概述 作为日常的Java开发者,可能对于Java内存堆有简单的了解,但是也是朦朦胧胧的,一些点不是很明确.本文就把堆内存中的每个空间说清楚,把每个空间内存储的内容说明白. 2. Java内存结构 用一张图片了解Java的内存结构. 其中一些空间是私有或者共享的: 线程私有:PC寄存器(程序计数器),虚拟机栈,本地方法…
理解JVM运行时的数据区是Java编程中的进阶部分.我们在开发中都遇到过一个很头疼的问题就是OutOfMemoryError(内存溢出错误),但是如果我们了解JVM的内部实现和其运行时的数据区的工作机制,那么前面的问题就会迎刃而解.在这片文章中,我们将简单了解JVM中有哪些运行时数据区以及这些数据区的工作机制. 1.JVM运行时数据区分类 程序计数器 (Program Counter (PC) Register) JVM栈 (Java Virtual Machine Stacks) 堆内存 (H…
前言: 我们每天都在编写Java代码,编译,执行.很多人已经知道Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行. 那在整个程序执行过程中,JVM中怎么存取数据和相关信息呢? 事实上在JVM中是用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存. 一.运行时数据区域包括…