Loading

你必须掌握的关于JVM知识点

对本文所持态度

抓住主要矛盾,抓住重点学习,然后从这些点展开学。

不管是面试别人,还是参加面试。都可以有收获。

JDK体系结构与JVM架构解析

jdk

jre

javac

jvm

Java是怎么实现跨平台的

不同平台实现的JVM,都遵循相同的Java语言规范、Java虚拟机规范。

JVM:从软件层面屏蔽不同操作系统在底层硬件与指令上的区别。

实现跨平台的关键就是JVM。

JVM内存

运行时数据区有哪些内容?

线程私有:虚拟机栈、本地方法栈、程序计数器

线程共享:堆、方法区

Java内存模型

image-20200614235044322

image-20200614235401973

image-20200614235459979

引用自https://www.processon.com/view/5ea7a1b9e401fd21c196eb17?fromnew=1

JVM运行时数据区

image-20200614233701288

引用自https://www.processon.com/view/5e9064d80791294229cc2d3b?fromnew=1

对象初始化过程及GC过程

image-20200614233404526

image-20200614230220995

如何查看字节码

javap命令

javap -c Main.class

如何分析字节码

参考JVM指令手册

程序计数器

当前线程正在执行的字节码的地址

栈桢

局部变量表

  • 八大基本数据类型

  • 对象引用

  • returnAddress

操作数栈

动态链接

方法出口

堆内存解析

垃圾回收机制解析

image-20200615000124204

image-20200615000152434

image-20200615000208328

垃圾回收器

image-20200615000306726

image-20200615000326192

image-20200615000705856

引用自https://www.processon.com/view/59a52df0e4b0920e4be264b8?fromnew=1#map

minor gc和full gc都会触发STW

亿级流量电商系统JVM调优实战

JVM调优目的

减少STW,减少GC次数,减少GC时间

为什么要设计STW?

为了让可达性分析结果更准确,不可以在分析过程中,对象引用关系还在不断变化。

posted @ 2020-06-14 23:06  元宝爸爸  阅读(345)  评论(0编辑  收藏  举报