JVM虚拟机涉及到的知识点-02

1.JVM所处的位置

在这里插入图片描述

2.JVM的体系结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.类加载器

作用:将类加载到虚拟机
1). 虚拟机自带的加载器
2). 启动类(根)加载器 加载rt.jar
3).扩展类加载器 ext/*.jar
4).应用程序加载器 classpath下的类

4.双亲委派机制

在这里插入图片描述
1)用户如何自定义加载器?
2)如何加载不到类:会提示报错class not found
3)spi破坏了双亲委派机制

5.沙箱安全机制
6.native method stack

1)凡是带了native关键字的方法,说明java的作用域达不到了,会去调用底层c或者c++语言的库!流程:本地方法栈—>本地方法接口
2)JNI的作用扩展java的使用,融合不同的编程语言为java所用eg:Robot

7.pc寄存器
8.方法区

1)所有线程共享,常量池在方法区内

2)静态变量,常量,类信息(构造方法,接口定义),运行时的常量池存在方法区中。但是实际变量存在内存中 即:static final class 常量池

9.栈(数据结构)

程序=数据结构+算法
程序=框架+业务逻辑 ❌

栈存储的内容:8大基本类型,对象的引用

10.三种JVM

1)sun公司虚拟机HotSpot
2)Bea 公司 JRockit
3)IBM公司j9vm JIT

11.堆(Heap)

1)一个jvm只有一个堆内存,堆内存大小可以调节
在这里插入图片描述
2)堆内存细分三个区域:新生区(Eden),老年区,永久区
模拟OOM

3)在JDK8以后,永久存储区改了名字叫元空间

12.新生区.老年区,永久区
1)新生区:类诞生和成长的地方,甚至死亡
2)新生区包含 Eden+幸存0区和幸存1区
3)永久区:常驻内存用来存放jdk自身携带的class对象,接口元数据,存储的是java运行时的一些环境!关闭虚拟机释放区域内存,一个启动类加载大量的第三方jar包。tomcat部署太多的应用,大量动态生成的反射类不断背加载直到内存满就会OOM
jdk6:永久代,常量池是在方法区
jdk7:永久代,但是慢慢的退化了(去永久代),常量池堆种
jdk8:无永久代,常量池在元空间

问题:Java8中的JVM元空间是不是方法区?
不是,元空间是方法区的一种具体实现。首先,方法区是JVM规范的一个概念定义,并不是一个具体的实现,每一个JVM的实现都可以有各自的实现;然后,在Java官方的HotSpot 虚拟机中,Java8版本以后,是用元空间来实现的方法区;在Java8之前的版本,则是用永久代实现的方法区;也就是说,“元空间” 和 “方法区”,一个是HotSpot 的具体实现技术,一个是JVM规范的抽象定义;所以,并不能说“JVM的元空间是方法区”,但是可以说在Java8以后的HotSpot 中“元空间用来实现了方法区”。然后多说一句,这个元空间是使用本地内存(Native Memory)实现的,也就是说它的内存是不在虚拟机内的,所以可以理论上物理机器还有多个内存就可以分配,而不用再受限于JVM本身分配的内存了。

14.堆内存调优
在这里插入图片描述
Jprofile工具分析OOM原因
MAT分析OOM原因

在一个项目中突然出现了OOM故障,那么该怎么排除呢?

MAT,jprofier作用

分析Dump内存文件,快速定位内存泄漏
在这里插入图片描述
15.GC
1.常用算法引用计数法
2.复制算法
3.标记压缩清除
16.JMM

学习了解虚拟机方法:百度 思维导图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值