其他分享
首页 > 其他分享> > JVM优化

JVM优化

作者:互联网

文章目录


前言

学习java的我们怎么都离不开虚拟机。如果你是一个工作三年以上的朋友,那么jvm的学习将会是有必要的,许多线上的问题都需要通过理解它来更好的排查。


一、java虚拟机的内存管理

首先来看下虚拟机的五大模块:类加载器,运行时数据区,垃圾回收模块,执行引擎和本地方法接口。
在这里插入图片描述
运行时数据区:
jdk8做了改进,舍弃了方法区(永久代),取而代之的是–原数据区、直接内存(放在本地内存中)
在这里插入图片描述

在这里插入图片描述
下面分别来看下各个模块的功能划分:

模块功能划分
程序计数器当前线程执行的字节码行号指示器,线程私有
本地方法栈执行native方法 ,线程私有
虚拟机栈用于存储栈帧,每个方法执行都会创建一个栈帧用于存局部变量表、操作数栈等,线程私有
本地方法区存放虚拟机栈执行后的方法、常量、静态变量,线程共享
所有对象创建的管理,所以也分为新生代和老年代,线程共享

jdk8中将方法区替换成了元数据区一起来看下:
HotSpots取消了永久代,那么是不是也就没有方法区了呢?当然不是,方法区是一个规范,规范没变,它就一直在,只不过取代永久代的是元空间(Metaspace)而已。

.Q:为啥做这个改变?
A:1.原来的方法区存放的元数据、常量、静态变量大小不固定,容易造成内存溢出。
2.移除永久代是为融合HotSpot VM与 JRockit VM而做出的努力,因为JRockit没有永久代,不需要配置永久代(这个蛮知道下哈哈。。。

标签:堆外,对象,虚拟机,回收,线程,内存,JVM,优化
来源: https://blog.csdn.net/weixin_54604802/article/details/118416481