java JVM总结

java JVM总结_第1张图片
java JVM总结_第2张图片

复制算法

java JVM总结_第3张图片

标记清除

java JVM总结_第4张图片

标记整理

java JVM总结_第5张图片

gc root

jvm参数类型

1.标配参数
java JVM总结_第6张图片

2.x参数

java JVM总结_第7张图片

3.xx参数

Boolean类型
公式:-XX+或者-某个属性值(+表示开启-表示关闭)
jps
jinfo:查看java正在运行java程序后台信息
例查看属性是否开启:jinfo -flag PrintGCDetails {进程号}
例是否串行垃圾回收器: -XX+ UseSerialGC
KV设值类型
公式:-XX:属性key=属性值value
例:-XX:MetaspaceSize=128m
-XX:MaxTenuringThreshold=15 (多少次交换升老年区)

jinfo举例,如何查询当前运行程序的配置
jinfo -flag 配置项 进程编号
jinfo -flags 进程编号 (模糊查询当前进程编号的所有参数)

坑题

java JVM总结_第8张图片

查看初始默认

java -XX:+PrintFlagsInitial
查看修改和更新的内容
java -XX:+PrintFlagsFinal (有:被修改过的)
打印命令行参数
java -XX:+PrintCommandLineFlags -version
在这里插入图片描述

最后一个参数看本次运行使用的垃圾回收器

java JVM总结_第9张图片

基本调优

-Xms 初始大小内存,默认为物理内存1/64,等价于-XX:initialHeapSize
-Xmx 最大分配内存,默认为物理内存1/4,等价于-XX:MaxHeapSIze
-Xss 设置单个线程栈的大小,一般默认为512k-1024k,等价于-XX:ThreadStackSize
-Xmn 设置年轻代大小,一般不用调
-XX:MetaspaceSize 设置元空间大小,元空间的本质和永久代类似,都是对jvm规范中方法区的实现。
不过元空间与永久代之间最大区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。
-XX:+PringGCDetails 打印垃圾回收日志,如下图

-XX:SurvivorRatio

java JVM总结_第10张图片

-XX:NewRatio

java JVM总结_第11张图片

-XX:MaxTenuringThreshold 设置垃圾最大年龄

强引用


例:object2 是强引用,不会被垃圾回收
java JVM总结_第12张图片

软引用

java JVM总结_第13张图片
java JVM总结_第14张图片
内存不足:
java JVM总结_第15张图片

弱引用gc后没有引用被回收。

java JVM总结_第16张图片
WeakHashMap key被滞空后对应的map键值对就会被垃圾回收器回收掉
java JVM总结_第17张图片

虚引用


java JVM总结_第18张图片
类似后置通知的虚引用
java JVM总结_第19张图片

java JVM总结_第20张图片
java JVM总结_第21张图片
StackOverflowError 栈空间被撑爆,最简单的例子是写一个递归方法。方法区在栈
java JVM总结_第22张图片

Java heap space 堆空间被撑爆

java JVM总结_第23张图片
GC overheadLimit exceeded 频繁的GC但是没有什么效果,回收不了多少就会报错。
在这里插入图片描述
java JVM总结_第24张图片

Direct buffer memory


java JVM总结_第25张图片

unable to create new native thread


java JVM总结_第26张图片

Metaspace

java JVM总结_第27张图片
java JVM总结_第28张图片
java JVM总结_第29张图片
java JVM总结_第30张图片

java JVM总结_第31张图片
java JVM总结_第32张图片
java JVM总结_第33张图片
java JVM总结_第34张图片
在这里插入图片描述
在这里插入图片描述

java JVM总结_第35张图片
java JVM总结_第36张图片

java JVM总结_第37张图片
java JVM总结_第38张图片
java JVM总结_第39张图片
在这里插入图片描述


在这里插入图片描述
java JVM总结_第40张图片





java JVM总结_第41张图片
在这里插入图片描述
java JVM总结_第42张图片

你可能感兴趣的:(java,jvm,开发语言)