JVM和类加载机制-01[JVM底层架构和JVM调优]
JVM底层
- Java虚拟机内存模型
- JVM组成部分
- 五大内存区域各自的作用
- 虚拟机栈(线程栈)
- 栈帧内存区域
- 本地方法栈
- 程序计数器
- 为什么jvm要设计程序计数器?
- 堆
- 方法区
- JVM优化-堆详解
- JVM底层垃圾回收机制
- jvm调优工具
- jvisualvm.exe
- Arthas工具使用
Java虚拟机内存模型
- JVM跨平台原因
就是在JVM层面对各个操作系统的指令做了不同处理
JVM组成部分
五大内存区域各自的作用
虚拟机栈(线程栈)
每次运行的时候,都会给线程栈分配一部分内存,有多少个线程就分配多少个。来存放各自线程运行时的变量,说白了就是工作内存,工作内存哪里来的就是虚拟机栈中分配来的
栈帧内存区域
一个方法对应一个栈帧内存区域,
本地方法栈
方法执行到了本地方法,本地方法执行也需要内存空间,就从本地方法栈中分配一部分给本地方法。本地方法就是naitve修饰的方法(底层是C++)
程序计数器
某行程序在方法区中的内存地址
为什么jvm要设计程序计数器?
比如上面的程序,如果是多线程情况下,A线程执行到第4行的时候,被其他线程抢占资源,其他线程执行,其他线程完毕,A线程再回头执行,如果没有程序计数器,它就不知道它之前执行到第几行,就得重新执行,有了程序计数器,A线程一看,我之前执行到第4行,现在就从第4行开始再执行。
堆
如果栈中存放的是变量是对象也就是引用类型的变量,那栈中存放的就是指向对象的指针,对象就存放在堆中,所有线程共享
方法区
存放常量+静态变量+类信息
方法区中存放的静态变量是引用类型的,那么方法区中存的即使静态引用变量的指针,对象还是存放到堆中。
JVM优化-堆详解
老年代占比2/3,年轻代占1/3。年轻代:8:1:1,年轻代又分为伊甸园区、s0、s1
JVM底层垃圾回收机制
新创建的对象都在新生代的伊甸园区,当伊甸园区满了后,字节码执行引擎就会开启垃圾收集线程,开始进行垃圾回收
常见的垃圾回收算法:
- JVM跨平台原因
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/67013073521340618f2757649c03d305.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/632a5afe5ed7415d80f49aa900166a00.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/7e80978e402b4847b80509e5407cc224.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/716f3bd48ce849819d6bd48cbc99ebac.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/d4ae3e67cd884ed19f88acb37dd1ea02.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/60a94351ed964dc0bed9ccc2d9892c80.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/92b9b29b207a42a49a8390ddfeb11948.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/e7e1bbb617da420fb7999cb6c003e7b0.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/db556cdc0bbd4f0aaa7e5a1e29abd6ee.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/277abce8a84746c5899fc19cb0630be2.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/0762035b2dbd46d18c27110ffa1446c2.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/c852b0dc9a3743a9a0079c6e94bf9259.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/8e135302e4fc442b88ee12c2bc4b836a.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/a6adc14308c74247b17027beb5cbc04c.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/32aa61709c41409b9b9f3438e8959c58.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/68231de1fd514a18b88c4ffe8583a2bd.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/bad2436633c84669a87ce5ff498ac688.png)
![JVM和类加载机制-01[JVM底层架构和JVM调优]](https://i-blog.csdnimg.cn/direct/37ca5a2a72a7488b99955fb1bb904a70.png)