JVM0000

1. JVM的位置

在这里插入图片描述

2. JVM的体系结构

在这里插入图片描述

3. 类加载器

4. 双亲委派机制

沙箱安全机制(了解)
在这里插入图片描述

5. native

带有native关键字的,说明java的作用范围达不到了,回去调用底层C语言的库。
在这里插入图片描述

6. PC寄存器

在这里插入图片描述

7. 方法区

在这里插入图片描述

8. 栈

在这里插入图片描述
a(),test()无限调用,最终会导致栈溢出。

在这里插入图片描述
栈 - 堆 - 方法区 交互关系

新建一个对象,给一个名到栈中,然后栈到堆中的具体实例进行实例化创建。
在这里插入图片描述
画出对象实例化的过程:
在这里插入图片描述

9. 堆 (Heap)

栈是每个线程都有一个,一个JVM只有一个堆内存,堆内存的大小可以调节。
在这里插入图片描述
在这里插入图片描述
GC垃圾回收,主要在伊甸园区和养老区。
假设内存满了,OOM(Out Of Memory Error),堆内存不够。
jdk8以后,永久存储区改为了元空间。

在这里插入图片描述

在这里插入图片描述
真理: 有99%的对象是临时对象!

在这里插入图片描述

在这里插入图片描述
元空间逻辑上存在,物理上不存在
在这里插入图片描述

在这里插入图片描述
初始化内存和调整分配总内存+打印GC的一些信息

在这里插入图片描述
遇到OOM报错:堆内存满了
1.尝试扩大堆内存,看结果
2.分析内存,可能有死循环错误代码,看一下那个地方出现问题(专业工具)

在项目中出现OOM故障如何处理?
在这里插入图片描述
在出现OOM报错后,进行Dump文件

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

找到这个文件,用Jprofiler打开它

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

10 . GC垃圾回收

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

猜你喜欢

转载自blog.csdn.net/qq_41997237/article/details/118115312
JVM