
深入理解Java虚拟机
小s学技术
我想看看专注的做一件事有多难
展开
-
深入理解Java虚拟机(1)内存模型
虚拟机内存模型总结先来一个总结: 内存区域 说明 程序计数器 当前线程执行的字节码行号计数器 本地方法栈 native方法栈 java虚拟机栈 执行java方法时的内存模型,65535 Java堆 存放对象实例,数组,存类的属性值,不存方法 方法区 堆的逻辑部分:类信息,常量,静态变量,jit 编译后的代码 ...原创 2018-04-10 11:55:18 · 197 阅读 · 1 评论 -
深入理解Java虚拟机(2)对象创建及内存分配
一.对象的创建过程虚拟机遇到一条new指令时: 1. 首先去常量池寻找符号引用(通过引用找到并检查该类是否被加载,解析) 2. 未被加载过则去加载解析类 3. 为新生的对象分配内存(此时对象所占内存大小确定) 4. 分配的堆内存空间初始化(即赋零值) 5. 设置对象头信息(header) — 对于JVM来说,此时已经初始化完成 6. java 类实例的<-...原创 2018-04-10 19:13:59 · 155 阅读 · 0 评论 -
深入理解Java虚拟机(3)垃圾回收
本文主要解决3个问题:哪些内存需要回收?什么时候回收?如何回收? 一、哪些内存需要回收?程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭,而且每一个栈帧中分配多少内存基本在类结构确定下来时就是已知的,不需要考虑复杂的回收问题。线程结束,内存就直接回收了。 而Java堆和方法区则只有处于运行时才会知道存放哪些实例数据等。Java堆回收类实例方法区主要回收废...原创 2018-04-12 16:53:38 · 147 阅读 · 0 评论 -
深入理解Java虚拟机(4)内存分配与回收策略
一、对象优先在Eden分配 大多数情况下,对现在新生代Eden区中分配,当Eden区没有足够空间时,虚拟机将发起一次Minor GC。 新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为大多Java对象寿命短暂,所以Minor GC非常频繁,回收速度快。 老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC,经常伴随着至少一次的M...原创 2018-04-12 22:35:45 · 160 阅读 · 0 评论