java JVM总结


复制算法

标记清除

标记整理

gc root

jvm参数类型

1.标配参数

2.x参数

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 -XX:+PrintFlagsInitial

查看修改和更新的内容

java -XX:+PrintFlagsFinal (有:被修改过的)

打印命令行参数

java -XX:+PrintCommandLineFlags -version

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

基本调优

-Xms 初始大小内存,默认为物理内存1/64,等价于-XX:initialHeapSize

-Xmx 最大分配内存,默认为物理内存1/4,等价于-XX:MaxHeapSIze

-Xss 设置单个线程栈的大小,一般默认为512k-1024k,等价于-XX:ThreadStackSize

-Xmn 设置年轻代大小,一般不用调

-XX:MetaspaceSize 设置元空间大小,元空间的本质和永久代类似,都是对jvm规范中方法区的实现。

不过元空间与永久代之间最大区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。

-XX:+PringGCDetails 打印垃圾回收日志,如下图

-XX:SurvivorRatio


-XX:NewRatio

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

强引用

例:object2 是强引用,不会被垃圾回收

软引用


内存不足:

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

WeakHashMap key被滞空后对应的map键值对就会被垃圾回收器回收掉

虚引用


类似后置通知的虚引用



StackOverflowError 栈空间被撑爆,最简单的例子是写一个递归方法。方法区在栈

Java heap space 堆空间被撑爆

GC overheadLimit exceeded 频繁的GC但是没有什么效果,回收不了多少就会报错。

Direct buffer memory


unable to create new native thread


Metaspace































相关推荐
追逐梦想的张小年14 小时前
JUC编程04
java·idea
好家伙VCC14 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
南极星100515 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
消失的旧时光-194315 小时前
第十三课:权限系统如何设计?——RBAC 与 Spring Security 架构
java·架构·spring security·rbac
baidu_2474386115 小时前
Android ViewModel定时任务
android·开发语言·javascript
Dev7z15 小时前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
不能隔夜的咖喱15 小时前
牛客网刷题(2)
java·开发语言·算法
serve the people15 小时前
python环境搭建 (十二) pydantic和pydantic-settings类型验证与解析
java·网络·python
小天源15 小时前
Error 1053 Error 1067 服务“启动后立即停止” Java / Python 程序无法后台运行 windows nssm注册器下载与报错处理
开发语言·windows·python·nssm·error 1053·error 1067
lekami_兰15 小时前
Java 并发工具类详解:4 大核心工具 + 实战场景,告别 synchronized
java·并发工具