Java语言】 jvm java虚拟机调优?

2021-04-21 16:08发布

10条回答
Uzi
2021-04-22 14:06

java虚拟机内存区域


Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域:

1.程序计数器:可以看作是当前线程所执行的字节码文件(class)的行号指示器,它会记录执行痕迹,是每个线程私有的。

2.方法区:主要存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据,该区域是被线程共享的,很少发生垃圾回收。

3.栈:栈是运行时创建的,是线程私有的,生命周期与线程相同,存储声明的变量。

4.本地方法栈:为native方法服务,native方法是—种由非java语言实现的java方法,与java环境外交互,如可以用本地方法与操作系统交互。

5.堆:堆是所有线程共享的一块内存,是在java虚拟机启动时创建的,几乎所有对象实例都在此创建,所以经常发生垃圾回收操作。


JDK8之前,Hotspot中方法区的实现是永久代(Perm)

JDK8开始使用元空间(Metaspace),以前永久代所有内容的字符串常量移至堆内存,其他内容移至元空间,元空间直接在本地内存分配。


一周热门 更多>