手机版 欢迎访问it开发者社区(www.mfbz.cn)网站

当前位置: > 开发

Java各类技能知识点学习链接大全:三、JVM相关

时间:2021/4/7 10:29:37|来源:|点击: 次

以下内容大多是学习链接,他人整理,个人收藏以便复习,同时归纳分享出来(如有不妥,原作者可随时联系本人删除,感谢!)

 

三、JVM相关

1、使用 VisualVM 进行性能分析及调优

https://www.ibm.com/developerworks/cn/java/j-lo-visualvm/

2、JDK8中JVM堆内存划分

https://www.cnblogs.com/jtlgb/p/10276258.html

3、Jvm调优系列
https://www.cnblogs.com/andy-zhou/p/5327288.html

4、如何在CMS和G1之间选择垃圾回收器:

https://zhuanlan.zhihu.com/p/59861022

5、堆中年轻代、老年代区分

https://www.cnblogs.com/crazy-lc/p/12636927.html

6、阿里JVM专家——  寒泉子博客

http://lovestblog.cn/

https://yq.aliyun.com/users/twvy4bo6n4ey2

7、Java中的NIO为什么用直接内存,而不用堆heap内存

https://cloud.tencent.com/developer/article/1586341

https://www.cnblogs.com/stevenczp/p/7506280.html

https://www.cnblogs.com/yanl55555/p/13334667.html

8、Java中9种常见的CMS GC问题分析与解决 (美团技术博客)

https://tech.meituan.com/2020/11/12/java-9-cms-gc.html

9、Jvm 启动常见参数 :

https://blog.csdn.net/kthq/article/details/8618052

10、从实际案例聊聊Java应用的GC优化(美团技术博客)

https://tech.meituan.com/2017/12/29/jvm-optimize.html

11、JVM系列详解:

(1)Java虚拟机详解(一)------简介

https://www.cnblogs.com/ysocean/p/9345787.html

(2)Java虚拟机详解(二)------运行时内存结构

https://www.cnblogs.com/ysocean/p/9345622.html

(3)Java虚拟机详解(三)------垃圾回收

https://www.cnblogs.com/ysocean/p/11108933.html

(4)Java虚拟机详解(四)------垃圾收集器

https://www.cnblogs.com/ysocean/p/11117365.html

(5)Java虚拟机详解(五)------JVM参数(持续更新)

https://www.cnblogs.com/ysocean/p/11109018.html

(6)Java虚拟机详解(六)------内存分配

https://www.cnblogs.com/ysocean/p/11117359.html

(7)Java虚拟机详解(七)------虚拟机监控和分析工具(1)——命令行

https://www.cnblogs.com/ysocean/p/11311667.html

(8)Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化

https://www.cnblogs.com/ysocean/p/11415514.html

 

12、Java8内存模型—永久代(PermGen)和元空间(Metaspace)

https://www.cnblogs.com/paddix/p/5309550.html

https://www.jianshu.com/p/92a5fbb33764

https://www.jianshu.com/p/a6f19189ec62

https://www.jianshu.com/p/1a0b4bf8d498

13、深入理解垃圾收集器和收集器的选择策略

https://blog.csdn.net/killuazoldyck/article/details/75081875

(对于吞吐量优先的场景,就只有一种选择,就是使用 PS 组合(Parallel Scavenge+Parallel Old )。
对于响应时间优先的场景,在 JDK1.8 的话优先 G1,其次是 CMS 垃圾回收器,另外还有PN、ZGC、Shenandoah。)

14、jvm垃圾回收器(串行、吞吐量优先、响应时间优先、G1)

https://www.cnblogs.com/zhai1997/p/12925364.html

15、JVM的永久代中会发生垃圾回收吗? 参考《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》

有些人认为方法区(如HotSpot虚拟机中的元空间或者永久代)是没有垃圾收集行为的,《Java虚
拟机规范》中提到过可以不要求虚拟机在方法区中实现垃圾收集,事实上也确实有未实现或未能完整
实现方法区类型卸载的收集器存在(如JDK 11时期的ZGC收集器就不支持类卸载),方法区垃圾收集
的“性价比”通常也是比较低的:在Java堆中,尤其是在新生代中,对常规应用进行一次垃圾收集通常
可以回收70%至99%的内存空间,相比之下,方法区回收囿于苛刻的判定条件,其区域垃圾收集的回
收成果往往远低于此。
方法区的垃圾收集主要回收两部分内容:废弃的常量和不再使用的类型。回收废弃常量与回收
Java堆中的对象非常类似。举个常量池中字面量回收的例子,假如一个字符串“java”曾经进入常量池
中,但是当前系统又没有任何一个字符串对象的值是“java”,换句话说,已经没有任何字符串对象引用
常量池中的“java”常量,且虚拟机中也没有其他地方引用这个字面量。如果在这时发生内存回收,而且
垃圾收集器判断确有必要的话,这个“java”常量就将会被系统清理出常量池。常量池中其他类(接
口)、方法、字段的符号引用也与此类似。
判定一个常量是否“废弃”还是相对简单,而要判定一个类型是否属于“不再被使用的类”的条件就
比较苛刻了。需要同时满足下面三个条件:
·该类所有的实例都已经被回收,也就是Java堆中不存在该类及其任何派生子类的实例。
·加载该类的类加载器已经被回收,这个条件除非是经过精心设计的可替换类加载器的场景,如
OSGi、JSP的重加载等,否则通常是很难达成的。
·该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方
法。
Java虚拟机被允许对满足上述三个条件的无用类进行回收,这里说的仅仅是“被允许”,而并不是
和对象一样,没有引用了就必然会回收。关于是否要对类型进行回收,HotSpot虚拟机提供了Xnoclassgc参数进行控制,
还可以使用-verbose:class以及-XX:+TraceClass-Loading、-XX:
+TraceClassUnLoading查看类加载和卸载信息,其中-verbose:class和-XX:+TraceClassLoading可以在
Product版的虚拟机中使用,-XX:+TraceClassUnLoading参数需要FastDebug版[1]的虚拟机支持。
在大量使用反射、动态代理、CGLib等字节码框架,动态生成JSP以及OSGi这类频繁自定义类加载
器的场景中,通常都需要Java虚拟机具备类型卸载的能力,以保证不会对方法区造成过大的内存压
力。
 

16、JVM监控命令:jps jstat jmap jhat jstack jinfo,可视化监控工具:jvisualvm、jconsole介绍:

https://www.cnblogs.com/ityouknow/p/5714703.html

https://segmentfault.com/a/1190000021547646

17、新一代垃圾回收器ZGC的探索与实践(基于JDK版本11)

https://blog.csdn.net/MeituanTech/article/details/107853015 (美团技术博客)

18、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法

https://blog.csdn.net/gaoyong_stone/article/details/79540242

19、阿里面试100%问到,JVM性能调优篇

https://www.toutiao.com/a6683710658250277380/

https://www.163.com/dy/article/ECM391VV0520O9RL.html(同上)

Copyright © 2002-2019 某某自媒体运营 版权所有