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垃圾回收