jvm内存布局

2022-06-14 16:33:06 浏览数 (1)

jvm是java虚拟机,在实际开发过程中,学习掌握jvm的相关知识也是非常必要的,本小节就一些最基础的理论来进行梳理

oracle的jdk用的HotSpot虚拟机

首先看到jvm这最常想到的就是内存模型、垃圾回收、字节码与类的加载机制、以及性能调优和监控等知识,也是面试当中容易考察的点

内存结构:

程序计数器:记录线程的执行位置,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存

✴️作用:

规定了java在运行过程中内存申请、分配、管理的策略保证了jvm的高效稳定运行

问题:java是一门半解释型半编译型语言怎么理解

jvm参数

参数分类

根据jvm参数开头可以区分参数类型,共三类:"-"、"-X"、"-XX"

标准参数(-):所有的JVM实现都必须实现这些参数的功能,而且向后兼容 例子:-verbose:class,-verbose:gc,-verbose:jni

非标准参数(-X):默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; 例子:Xms20m,-Xmx20m,-Xmn20m,-Xss128k

非Stable参数(-XX):此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用 例子:-XX: PrintGCDetails,-XX:-UseParallelGC,-XX: PrintGCTimeStamp

堆区

它存储着几乎所有的实例对象,堆区由各子线程共享使用

jvm配置参数

常用jvm命令:

1 jstack 2 jmap 3 jps

0 人点赞