目 录CONTENT

文章目录

jvm内存布局

在水一方
2022-01-08 / 0 评论 / 0 点赞 / 424 阅读 / 761 字 / 正在检测是否收录...

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

oracle的jdk用的HotSpot虚拟机

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

内存结构:

image.png

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

✴️作用:

规定了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

堆区

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

graph LR A[堆区] -->B(Young区) A --> C(Old区) B --> D(Eden) B --> E(S区) E --> F(S0) E --> G(S1)

jvm配置参数

常用jvm命令:

1 jstack
2 jmap
3 jps

0

评论区