《深入理解java虚拟机》读书笔记——垃圾收集与内存分配策略
- 本地变量表引用的对象;
- 方法区中静态属性引用的对象
- 方法区中常量引用的对象
- Native方法栈引用的对象。
public class TestGC{
public static void main(String[] argv){
BigObj obj1 = new BigObj();
BigObj obj2 = new BigObj();
obj1 = new BigObj();
obj2 = new BigObj();
BigObj obj3 = new BigObj();
BigObj obj4 = new BigObj();
}
static class BigObj{
private byte[] arr = new byte[3145728];
}
}
[GC [PSYoungGen: 6831K->432K(9216K)] 6831K->6576K(19456K), 0.0033010 secs] [Times: user=0.02 sys=0.01, real=0.00 secs]
[Full GC [PSYoungGen: 432K->0K(9216K)] [ParOldGen: 6144K->6373K(10240K)] 6576K->6373K(19456K) [PSPermGen: 2586K->2585K(21504K)], 0.0069120 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
[Full GC [PSYoungGen: 6315K->0K(9216K)] [ParOldGen: 6373K->6371K(10240K)] 12689K->6371K(19456K) [PSPermGen: 2585K->2585K(21504K)], 0.0044660 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
Heap
PSYoungGen total 9216K, used 6339K [0x00000007ff600000, 0x0000000800000000, 0x0000000800000000)
eden space 8192K, % used [0x00000007ff600000,0x00000007ffc30cf0,0x00000007ffe00000)
from space 1024K, % used [0x00000007ffe00000,0x00000007ffe00000,0x00000007fff00000)
to space 1024K, % used [0x00000007fff00000,0x00000007fff00000,0x0000000800000000)
ParOldGen total 10240K, used 6371K [0x00000007fec00000, 0x00000007ff600000, 0x00000007ff600000)
object space 10240K, % used [0x00000007fec00000,0x00000007ff238fc0,0x00000007ff600000)
PSPermGen total 21504K, used 2592K [0x00000007f9a00000, 0x00000007faf00000, 0x00000007fec00000)
object space 21504K, % used [0x00000007f9a00000,0x00000007f9c88310,0x00000007faf00000)
- obj1和obj2分配到新生代Eden区,约6M;
- 分配obj1_时,eden区空间不足,触发一次minor gc。由于survivor区大小只有1M,将obj1和obj2复制到老年代,eden区清空(日志中还有432k不知道是什么内容)
- obj1_和obj2_分配到新生代Eden区,约6M;此时obj1和obj2都变成了可回收对象;
- 分配obj3时,eden区空间不足,触发一次minor gc。由于空间担保失败,触发full gc,老年代的obj1和obj2清空,新生代的obj1_和obj2_复制到老年代,eden区清空。此时老年代占用6M,新生代0M;
- obj3和obj4分配到eden区。最终老年代占用6M,新生代占用6M。
《深入理解java虚拟机》读书笔记——垃圾收集与内存分配策略的更多相关文章
- 深入理解Java虚拟机二:垃圾收集与内存分配
垃圾收集:垃圾收集要完成三件事,包括哪些内存需要回收,什么时候回收及如何回收. 1.需要回收的内存判定:没有引用指向原先分配给某个对象的内存时,则该内存是需要回收的垃圾 Java垃圾收集器在对内存进行 ...
- 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域
深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...
- 【Todo】深入理解Java虚拟机 读书笔记
有一个在线系列地址 <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> http://book.2cto.com/201306/25426.html 已经下载了这本书(60多M ...
- 深入理解Java虚拟机读书笔记2----垃圾收集器与内存分配策略
二 垃圾收集器与内存分配策略 1 JVM中哪些内存需要回收? JVM垃圾回收主要关注的是Java堆和方法区这两个区域:而程序计数器.虚拟机栈.本地方法栈这3个区域随线程而生,随线程而灭,随着方 ...
- 深入理解Java虚拟机读书笔记5----虚拟机字节码执行引擎
五 虚拟机字节码执行引擎 1 运行时栈帧结构 ---栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈的栈元素. ---栈帧中存储了方法的局部变 ...
- 深入理解Java虚拟机读书笔记7----晚期(运行期)优化
七 晚期(运行期)优化 1 即时编译器(JIT编译器) ---当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,包括被多次调用的方法和被多次执行的循环体. ...
- 深入理解Java虚拟机读书笔记1----Java内存区域与HotSpot虚拟机对象
一 Java内存区域与HotSpot虚拟机对象 1 Java技术体系.JDK.JRE? Java技术体系包括: · Java程序设计语言: · 各种硬件平台上的 ...
- 深入理解java虚拟机读书笔记--java内存区域和管理
第二章:Java内存区域和内存溢出异常 2.2运行时数据区域 运行时数据区分为方法区,堆,虚拟机栈,本地方法栈,程序计数器 方法区和堆是线程共享的区域 虚拟机栈,本地方法栈,程序计数器是数据隔离的数据 ...
- 深入理解Java虚拟机——读书笔记
首先 强烈推荐周志明老师的这本书,真的可以说是(起码中文出版界)新手了解Java虚拟机必须人手一本的教科书!!! 第二部分自动内存管理机制 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器 ...
随机推荐
- 高通平台获取secure boot,串号等状态
adb shell下 运行./system/bin/r address 其中address对应各个flag参数的地址,具体如下: 无法打开/dev/mem节点(没有该节点),这时只需在内核配置中选上C ...
- Linux之prink原理
我的分析是基于Linux4.15.1 1.看看kernel是如何调用到console初始化函数的: 分两条线: a.start_kernel --> console_init --> ...
- centos 安装 crontab 和 简单的使用教程
crontab是一个非常好用的定时执行任务的程序.以下是操作方式 1. 安装 cron 的 主程序 : yum -y install vixie-cron 2. 安装 cron 守护进程的表格的程序 ...
- javascript 创建节点和新增节点
createElement(tabName) 创建一个为tagName的新元素节点 ANode.appendChild(BNode)把B节点追加至A节点的末尾 insertBefore(ANode,B ...
- 链表中倒数第k个节点(Java)
链表中倒数第k个节点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路:two-pointers思想,因为是单链表,没法得prevous点,直接遍历得到链表长度再重新遍历效率很低. 采用双指 ...
- sqlmap的安装
来自:http://www.51testing.com/html/89/n-3711589.html 一.下载 首先,需下载SqlMap以及适用于Windows系统的Python.下载地址如下: 1. ...
- c# 实现 HSV 调色板
界面相关核心代码如下: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private vo ...
- flagr a/b 测试特性开关&&微服务动态配置工具
flagr a/b 测试特性开关&&微服务动态配置工具 简单运行 docker docker run -it -p 18000:18000 checkr/flagr 运行界面 说明 参 ...
- day059-60 ajax初识 登录认证练习 form装饰器, form和ajax上传文件 contentType
一.ajax 的特点 1.异步交互:客户端发出一个请求后,需要等待服务器响应结束后, 才能发出第二个请求 2.局部刷新:给用户的感受是在不知不觉中完成请求和响应过程. 二.ajax 模板示例 ($.a ...
- Javascript 使用postMessage对iframe跨域传值或通信
实现目标:两个网站页面实现跨域相互通信 当前例子依赖于 jQuery 3.0 父页面代码:www.a.com/a.html <iframe id="myIframe" src ...