jvm的运行时数据区:
JVM内存结构图和垃圾回收
VM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young
Generation)、老年代(Old Generation),非堆内存就一个永久代
(Permanent Generation)
年轻代又分为Eden和Survivor区。Survivor区由FromSpace和ToSpace组
成。Eden区占大容量,Survivor两个区占小容量,默认比例是8:1:1。
非堆内存用途:永久代,也称为方法区,存储程序运行时长期存活的对
象,比如类的元数据、方法、常量、属性等。
在JDK1.8版本废弃了永久代,替代的是元空间(MetaSpace),元空间与永久代上类似,都是方法区的实现,他们最大区别是:元空间并不在JVM中,而是使用本地内存。有了元空间就不再会出现永久代OOM问题了!
垃圾回收器:
CMS是标记清除算法,G1是标记整理复制算法
JVM调优工具_arthas
1 执行dashboard查看应用信息
2 thread -b可以直接定位死锁问题;
3 jad反编译:非常强大的功能,在实际工作中,经常出现类似场景,
提交的代码未能完成预期功能,或是不确定是否正确提交到应用分支等
等,可以使用jad命令进行生产中反编译 jad <class> 全路径;