
JVM
记录自己学习JVM的点点滴滴
向上奔跑
没有任何一个人的成功是偶然
展开
-
JVM深入解析三之常量池
Class常量池Class文件是以十六进制保存的,当然我们一般可以通过javap -v XXX.class命令生成更可读的JVM字节码指令文件。Class常量池可以理解为是Class文件中的资源仓库。 Class文件中除了包含类的版本、字段、方法、接口等描述信息外, 还有一项信息就是常量池(constant pool table),用于存放编译期生成的各种字面量(Literal)和符号引用(Symbolic References)。字面量字面量就是指由字母、数字等构成的字符串或者数值常量,字原创 2020-07-22 13:57:04 · 185 阅读 · 0 评论 -
JVM深入解析五之调优命令及工具
JVM调优命令学习JVM调优,那么有两个参数是必然要熟悉的。jps:是jdk提供的一个查看当前java进程的小工具。top -p <pid>:显示java进程的内存情况。Jmapjmap -histo pid:此命令可以用来查看内存信息,实例个数以及占用内存大小,当然,也可以在后面加上 > /Users/Downloads/log.txt 生成日志文件。num:序号 instances:实例数量 bytes:占用空间大小 class name:类名称,[C i原创 2020-07-22 13:57:32 · 214 阅读 · 0 评论 -
JVM深入解析二之结构与内存
目录JVM整体结构JVM内存模型堆(线程共享)虚拟机栈(线程私有)方法区(元空间)(线程共享)程序计数器(线程私有)本地方法区(线程私有)JVM内存分配对象的创建1.类加载检查2.分配内存3.初始化4.设置对象头5.执行方法对象指针压缩对象内存分配1.对象栈上分配2.对象在Eden区分配3.对象进入老年代4.老年代空间分配担保机制对象内存回收1.引用计数法2.可达性分析算法3.方法区类回收(如何判断一个类是无用的原创 2020-07-22 13:56:52 · 150 阅读 · 0 评论 -
JVM深入解析四之垃圾收集器
目录垃圾收集算法1.标记-复制算法2.标记-清除算法3.标记-整理算法垃圾收集器1.Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)2.Parallel Scavenge收集器(-XX:+UseParallelGC,-XX:+UseParallelOldGC)3.ParNew收集器(-XX:+UseParNewGC)4.CMS收集器(-XX:+UseConcMarkSweepGC(old))5.G1收集器(-XX:+U..原创 2020-07-22 13:57:14 · 668 阅读 · 1 评论 -
JVM深入解析一之类加载过程
类加载过程加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的 main()方法,new对象等等;在加载阶段会在内存中生成一个代表这个类的 java.lang.Class对象,作为方法区这个类的各种数据的访问入口; 验证:校验字节码文件的正确性; 准备:给类的静态变量分配内存,并赋予默认值; 解析:将符号引用替换为直接引用,该阶段会把一些静态方法的符号引用替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程序运行期间转载 2020-07-22 13:56:26 · 248 阅读 · 1 评论