读书笔记jvm探秘之一:内存概况
来源:互联网 发布:手机oa软件 编辑:程序博客网 时间:2024/05/18 08:36
堆,虚拟机主要内存,可以形象的说,堆是对象的存储库,几乎所有的对象实例和数组都在此分配内存,当然也死于此,jvm垃圾回收机制(简称GC)主要处理的就是这个地方。它被所有线程共享,没错,这可能造成一些问题,此处留到讨论对象时再说。堆的存储空间在物理上不要求一定连续,实际上它只要让我们看起来是连续的就可以了(虚拟化内存),一般情况下,堆的大小是可以扩展的,当然如果计算机内存满了,导致堆无可申请的话,对象创建就失败了,那么就会抛出outofmemeryError异常。
方法区,顾名思义,它就是用来存储方法的(当然还有别的=。=),它和堆一样被线程共享,负责存储加载的类信息、常量、静态变量、即时编译器编译后的代码等数据(注意,JAVA代码通常是即时编译的,即用到哪里就编译哪里,用的少的就擦掉,用的多的就留下来)。这里同样需要GC的回收和处理,其实通常需要回收的仅仅是常量池而已(至于类信息吗、、、),方法区和堆一样,无可扩展时就会抛出outofmemeryError异常。
本地方法栈,线程私有,这个地方如果不深入剖析的话,很难理解这是干什么用的,因此目前俺只知道它用来存储本地的方法(只有个模糊的感念凭感觉这像是干什么的干什么的、、=。=),区别于JAVA方法,它是对非JAVA语言的一种外部接口。还有它是栈,是栈就可能溢出。
虚拟机栈,每个线程有一个独立的虚拟机栈,互不影响,随线程的出生而出生死亡而死亡,虚拟机栈以帧为单位,每当执行一个方法时,都会在栈顶创建一个栈帧,用于存储局部变量(方法内的)、方法出口等信息,方法的调用和完成的过程,就是栈帧入栈出栈的过程。
程序计数器,这个很重要,每个线程/方法执行到哪了,在哪休眠,在哪恢复,都需要程序计数器记录,由于CPU每个核心同时只能执行一个线程的指令,所以这种记录是非常必要的,因此它线程私有。
- 读书笔记jvm探秘之一:内存概况
- 读书笔记jvm探秘之二: 对象创建
- 读书笔记JVM探秘之三:Class文件
- Java进阶 - JVM 内存管理机制探秘
- jvm探秘一:java内存模型
- JVM内存概况与垃圾回收机制详解
- 读书笔记JVM探秘之四:类加载器
- 读书笔记JVM探秘之六:编译器的那些事儿
- JVM学习之一:内存组成
- JVM内存分配分析之一
- [Java]理解JVM之一:JVM内存区域
- 【JVM读书笔记】- Java内存区域
- JVM读书笔记之JVM内存管理
- 读书笔记:HTTP概况
- 深入理解jvm之一【内存区域】
- 深入理解JVM之一:Java内存区域
- 深入理解JVM之一:Java内存结构
- 深入理解JVM之一:Java内存区域
- 整数运算(加减乘除的底层操作)
- 浮点数的表示
- 2016这些Android技术会很火
- opencv使用日记之一:平台搭建Mat类以及图像的读取修改
- Java中23中设计模式
- 读书笔记jvm探秘之一:内存概况
- 通过使用Byte Buddy,便捷地创建Java Agent
- 读书笔记jvm探秘之二: 对象创建
- jvm探秘之三:GC初步
- spring入门之ContextLoadListener
- 快速排序算法(C)
- 二叉排序树第一版
- 关于C、内存、栈的一些杂谈
- 斯坦福大学机器学习公开课, 梯度下降算法,随机梯度下降算法,最小二乘拟合法总结以及证明