JVM
文章平均质量分 84
岱宗夫如何,齐鲁青未了。
造化钟神秀,阴阳割昏晓。
荡胸生层云,决眦入归鸟。
会当凌绝顶,一览众山小。
Hey 锡瑞
这个作者很懒,什么都没留下…
展开
-
《深入理解Java虚拟机》7:虚拟机类加载机制
一、类加载时机....待更新二、类(Class)加载过程非数组类型加载阶段:Class文件需要加载到虚拟机中之后才能运行和使用,虚拟机如何加载这些Class?加载Class类型文件主要三步:加载——>连接(连接过程三步:验证——>准备——>解析)——>初始化;所以类加载过程具体有五个步骤:加载、验证、准备、解析、初始化数组类型类加载: ...原创 2019-12-14 00:30:29 · 177 阅读 · 0 评论 -
《深入理解Java虚拟机》6:类文件结构
概述:JVM可以理解的代码叫 字节码(.class文件),它不面向任何特定处理器只面向虚拟机。字节码并不针对一种特定机器,所以Java程序无需重新编译就可在不同操作系统运行(跨平台)一、Class类文件结构根据JVM规范,类文件由单个ClassFile结构组成:ClassFile { u4 magic; //Class 文件的标志 u2 ...原创 2019-12-13 13:02:51 · 259 阅读 · 0 评论 -
《深入理解Java虚拟机》5:编译期与运行期代码优化
一、早期(编译期)优化总结好后再更新......二、晚期(运行期)优化总结好后再更新......上一篇:调优案例分析与实战下一篇:类文件结构...原创 2019-12-11 12:56:52 · 140 阅读 · 0 评论 -
《深入理解Java虚拟机》4:调优案例分析与实战
严格根据经典书籍《深入理解Java虚拟机(第2版): JVM高级特性与最佳实》章节目录来总结一、调优案例分析日后总结好后再更新......二、调优实战:Eclipse运行速度调优日后总结好后再更新......上一篇:虚拟机性能监控与故障处理下一篇:编译期与运行期代码优化...原创 2019-12-11 12:54:54 · 196 阅读 · 0 评论 -
《深入理解Java虚拟机》3:虚拟机性能监控与故障处理工具
一、JDK的命令行工具jps:虚拟机进程状况工具。用户查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息; jstat:虚拟机统计信息监视工具。用于收集 HotSpot 虚拟机各方面的运行数据; jinfo:Java配置信息工具。用于显示虚拟机配置信息; jmap :Java内存映像工具。用于生成堆转储快照; jhat: 虚拟机堆转储快照分析工具。用于分析...原创 2019-12-10 23:39:14 · 236 阅读 · 0 评论 -
《深入理解Java虚拟机》2:垃圾收集器与内存分配策略
一、常见问题如何判断对象是否死亡(两种方法)。 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。 如何判断一个常量是废弃常量 如何判断一个类是无用的类 垃圾收集有哪些算法,各自的特点? HotSpot 为什么要分为新生代和老年代? 常见的垃圾回收器有那些? 介绍一下 CMS,G1 收集器。 Minor Gc 和 Full G...原创 2019-12-03 18:05:43 · 348 阅读 · 0 评论 -
《深入理解Java虚拟机》1:Java内存区域与内存溢出异常
一、JVM的常见问题1.1.基本问题介绍下Java内存区域(运行时数据区域) Java对象的创建过程(5步) 对象的访问定位的两种方式(句柄和直接指针两种方式) 说一说Java内存区域与虚拟机的关系二、运行时数据区域JDK1.8之前: JDK1.8:线程私有的:程序...原创 2019-11-29 18:02:47 · 1622 阅读 · 0 评论 -
深入理解JVM原理-G1收集器
什么是H巨型对象区:大小超过一个Region容量的50%以上的对象存放的区域,为了解决如果它是一个短期存活的巨型对象,放入老年代就会对垃圾收集器造成负面影响,触发老年代频繁GC,所以引入H区概念。作用:如果一个线程修改了Region内部的引用,就必须要去通知RSet,更改其中的记录,引用的对象很多,赋值器需要对每个引用做处理,开销很大,引入卡片可解决。RSet 的写屏障:每次将一个老年代对象的引用修改为指向年轻代对象,都会被写屏障捕获并记录下来,因此在年轻代回收的时候,就可以避免扫描整个老年代来查找根。原创 2019-04-04 18:03:31 · 755 阅读 · 1 评论 -
深入理解JVM原理-垃圾回收机制
(2)Eden区存活对象基于复制算法复制到To S区、From S达到默认15次复制阈值会到老年代,没有达到阈值也是复制到 To S区;(1)在GC开始时,对象会存在Eden和From S区,To S区是空的,当Eden没有足够内存分配对象时执行一次Minor GC;JVM内存的程序计数器、虚拟机栈、本地方法栈的生命周期是和线程是同步的,随着线程的销毁而自动释放内存,所以只有。(3)清空Eden区和From S区,From S区和To S区角色互换。:例如类全限定名、方法签名;)、静态变量、常量池;原创 2019-04-04 18:06:30 · 342 阅读 · 1 评论