JVM原理

JVM原理:
栈,堆,方法区,本地方法区,程序计数器,其中栈,方法区和程序计数器都是线程私有,内存回收主要是针对堆和方法区;本地方法区为native提供服务
垃圾算法:标识-清除;复制;标识-整理;分代算法(新生代/老生代,新生代复制算法;老生代用标识清理)
回收器:是堆垃圾算法的执行
1.serial收集器,串行收集器,一个线程回收
2.ParNew:serial的多线程版本
3.CMS:特点,并发,底停顿;缺点:碎片多
3.G1:堆内存分多个相等独立区域,标识整理,看预测停顿

JVM调优原则:
1.IO密集型,年轻代空间大些;内存计算密集型,老年代空间大些;
2.垃圾回收器选择;目标停顿时间配置;当堆内存达到一定比例时
3.计算型程序,需要吞吐量大用ParallelGC;IO密集型需要响应时间快用CMS,G1

JVM性能调优命令
jps、jstack、jmap、jhat、jstat、hprof使用详解
https://my.oschina.net/feichexia/blog/196575

JMM内存模型即原理:
https://blog.csdn.net/ChineseSoftware/article/details/119212455
https://baijiahao.baidu.com/s?id=1713691848702339806&wfr=spider&for=pc
1.JMM-Java memory model:定义了JVM(Java虚拟机)在计算机内存(RAM)中的工作方式,JMM内属于JVM
2.JMM把JVM内部分成线程栈和堆,每个线程有自己的独立的内存,不能变更主内存
Java内存模型:
表述:就是一种符合内存模型规范,屏蔽了各种硬件和操作系统的访问差异,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制和规范

JVM调优步骤:排除CPU长时间占用过高
1.top命令找到消耗过高的进程ID
2.top -p 进程ID ,单独监控这个进程,然后按大写H,查看这个进程的所欲线程信息,并记录过高的线程的PID(十进制)
3.jstack 进程ID 输出当前进程的所有堆栈信息,
4.对第二步的线程ID转换成16进制,在第三步的信息中去找对应的线程的信息,查看对应的问题

JVM监控工具:
jProfile,arthas,Jvisualvm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值