摘要: 前面几章,我们讲了Java虚拟机、虚拟机的内存结构、认识对象(创建、内存分配、访问定位)、对象的回收。 前面的准备都是理论基础,出现了问题,也能从原理上来剖析问题是如何出现的,本章开始,将学习借助工具如何解决问题,让我们的虚拟机的性能达到最优。 工具介绍: Jps(JVM Process Statu 阅读全文
posted @ 2018-11-07 17:12 君哥~ 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 前面部分,我们了解了判断对象是否为垃圾对象、垃圾收集算法以及垃圾收集器,这些部分主要是针对内存回收的。Java技术体系中所提倡的自动内存管理无非就是两部分: a). 垃圾回收 b). 内存分配 我们先来看看JVM内存区域的划分: heap区:Eden Space(伊甸园)、Survivor Spac 阅读全文
posted @ 2018-11-07 17:12 君哥~ 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 下面一张图是HotSpot虚拟机包含的所有收集器,图是借用过来滴: Serial收集器(复制算法)新生代单线程收集器,标记和清理都是单线程,优点是简单高效。是client级别默认的GC方式,可以通过-XX:+UseSerialGC来强制指定。 Serial Old收集器(标记-整理算法)老年代单线程 阅读全文
posted @ 2018-11-07 17:12 君哥~ 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 打算把Java虚拟机这块单独弄一个主题出来,做做备忘,结构如图所示: 后面还有一部分待更新... 阅读全文
posted @ 2018-11-07 17:11 君哥~ 阅读(158) 评论(0) 推荐(0) 编辑
摘要: Java 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及程序计数器这一小部分内存 2.1 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行 阅读全文
posted @ 2018-11-07 17:11 君哥~ 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 在HotSpot虚拟机中,对象在内存中的布局分为三块:对象头、示例数据、对齐填充。1.对象头 包括两部分:Mark Word、类型指针、数组长度(if 数组对象) (1)Mark Word:存储对象自身的运行时数据(哈希码、GC年龄、锁标志、持有的锁等)。被设计成非固定数据结构,根据对象状态占用内部 阅读全文
posted @ 2018-11-07 17:11 君哥~ 阅读(608) 评论(0) 推荐(0) 编辑