提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Java之所以能够崛起,JVM功不可没。Java虚拟机最初服务于让Java语言凌驾于平台之上,实现“编写一次,到处运行”;而随着时间的推移,JVM经过不同公司和团体以不同方式的实现,逐渐有更多Java以外的语言登上了JVM这条船。本专题介绍了JVM的基础知识、配置以及一些调优问题的解决方法。
提示:以下是本篇文章正文内容,下面案例可供参考
一、JDK和JVM区别
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、JVM模型
1.模型展示
2.JVM模块讲解
-
堆:当Eden放满时,会触发young GC,将Eden和存有对象的s0或者s1区同时标记垃圾对象, 并将非垃圾对象存放到空余的s0或者s1区域,
进入老年代例如:将要s0或者s1区域剩余的非垃圾对象若大于50%则进入老年代;对象的分代年龄等于15;对象的内存分配是大对象存放到老年代等 -
栈:主要优化点开启逃逸分析和标量替换,更有效的存储对象
-
jvm优化点:主要是减少STW,进而减少young GC 和 full GC
1.控制堆中老年代和年轻代或者第一电源区和s0/s1区域的比例
2.设置初始的元空间大小,若不设置会进行收缩和扩展等操作进而产生Full GC
3.开启对象动态年龄判断机制,老年代空间担保机制
4.针对不同的内存、需求等条件,设置好符合的垃圾器
5.使用jinfo 、jmap、jstack、jstat等命令进行查看服务的gc次数等
总结
尽可能让对象在年轻代进行回收,减少非垃圾对象进入老年代,避免老年代频繁产生Full GC