JVM虚拟机
-
JVM的位置
-
JVM的体系结构
-
类加载器
-
虚拟机自带的加载器
-
启动类(根)加载器
-
扩展类加载器
-
应用(系统类)程序加载器
-
-
Native
//native:凡是带了native关键字的,说明java的作用范围达不到,会去调用底层c语言的库 //会进入本地方法栈 //调用本地方法本地接口 JNI接口 //JNI:扩展java 的使用,融合不同的编程语言为java使用,最初是:c c++ //java诞生的时候c,c++横行,想要立足,必须要有调用c c++的程序 //它在内存区域中专门开辟了一块标记区域:native method stack //在最终执行的时候,加载本地方法库中的方法通过JNI接口 //调用其他接口:
-
方法区
-
栈:数据结构
-
堆
Heap:一个JVM只有一个堆内存,堆内存的大小是可以调节的
类加载器读取类文件后。会把:常量、类、方法、变量,保存所有引用类型的真实数据
堆内存分为三个区:
- 新生区(伊甸园区) Young
- 类:诞生和成长的地方,或者死亡
- 所有的对象都是在伊甸园区new出来的
- 幸存者(0、1)
- 养老区 Old :当一个对象经历了15次GC后,就会进入养老区
- 永久区
GC 垃圾回收,主要是在伊甸园区和养老区
OOM:堆内存不够 outofmemory
JDK8以后:养老区 = 元空间
99%的对象都是临时对象
- 新生区(伊甸园区) Young
-
永久区
-
GC常用算法
总结
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。