JVM优化
创始人
2024-04-02 01:16:53
0

一、什么是JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
主流虚拟机

虚拟机名称介绍
HotSpotOracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心
J9J9是IBM开发的高度模块化的JVM
JRockitJRockit 与 HotSpot 同属于 Oracle,目前为止 Oracle 一直在推进 HotSpot与 JRockit 两款各有优势的虚拟机进行融合互补
DalvikAndroid上的Dalvik 虽然名字不叫JVM,但骨子里就是不折不扣的JVM

二、JVM与操作系统

为什么要在程序和操作系统中间添加一个JVM
Java 是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的,所以就需要 JVM 进行一番转换。

在这里插入图片描述
从图中可以看到,有了 JVM 这个抽象层之后,Java 就可以实现跨平台了。JVM 只需要保证能够正确执行 .class 文件,就可以运行在诸如 Linux、Windows、MacOS 等平台上了。而 Java 跨平台的意义在于一次编译,处处运行,能够做到这一点 JVM 功不可没。比如我们在 Maven 仓库下载同一
版本的 jar 包就可以到处运行,不需要在每个平台上再编译一次。现在的一些 JVM 的扩展语言,比如 Clojure、JRuby、Groovy 等,编译到最后都是 .class 文件,Java 语言的维护者,只需要控制好 JVM 这个解析器,就可以将这些扩展语言无缝的运行在 JVM 之上了。
应用程序、JVM、操作系统之间的关系
在这里插入图片描述
最后,我们简单看一下一个 Java 程序的执行过程,它到底是如何运行起来的

在这里插入图片描述

三、GC日志分析

GC日志是一个很重要的工具,它准确记录了每一次的GC的执行时间和执行结果,通过分析GC日志可以优化堆设置和GC设置,或者改进应用程序的对象分配模式。
GC日志参数

参数说明
-XX:+PrintGC打印简单GC日志。 类似:-verbose:gc
-XX:+PrintGCDetails打印GC详细信息
-XX:+PrintGCTimeStamps输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps输出GC的时间戳(以日期的形式)
-XX:+PrintHeapAtGC在进行GC的前后打印出堆的信息
-Xloggc:…/logs/gc.log指定输出路径收集日志到日志文件

日志分析工具
在线分析工具 https://gceasy.io/index.jsp

  • GCeasy是一款在线的GC日志分析器,可以通过GC日志分析进行内存泄露检测、GC暂停原因分析、JVM配置建议优化等功能,而且是可以免费使用
    在这里插入图片描述

三、调整JVM参数进行优化

1.设置并行垃圾回收器

#年轻代、老年代均使用并行收集器,初始堆内存64M,最大堆内存512M
JAVA_OPTS="-XX:+UseParallelGC -XX:+UseParallelOldGC -Xms64m -Xmx512m -XX:+PrintGCDetails -
XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

展示测试结果:

在这里插入图片描述
2.调整年轻代大小

JAVA_OPTS="-XX:+UseParallelGC-XX:+UseParallelOldGC-Xms512m-Xmx512m-XX:NewRatio=2-XX:SurvivorRatio=8-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintGCDateStamps-XX:+PrintHeapAtGC-Xloggc:../logs/gc.log"

在这里插入图片描述
3.设置G1垃圾收集器
理论上而言,设置为G1垃圾收集器,性能是会提升的。但是会受制于多方面的影响,也不一定绝对有提升。

#设置使用G1垃圾收集器最大停顿时间100毫秒,初始堆内存512m,最大堆内存512m
JAVA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -Xms512m -Xmx512m -XX:+PrintGCDetails -
XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:../logs/gc.log"

相关内容

热门资讯

公公73岁寿宴上,儿媳哽咽感谢... 近日,陕西西安的毛女士在公公73岁寿宴上哽咽致谢,感谢老人主动帮忙带娃,该视频引发热议。 毛女士对记...
巴拿马总统府下令:立即在原址修... 来源:红星新闻 据新华社巴拿马城12月28日电 巴拿马总统府28日发布公告,明确反对拆毁位于巴拿马运...
中指·政策要闻丨住建部部署20... 获取最新政策解读报告 ☞ 戳这里,加入地产/物业/投拓/产城 摘要: 全国住建工作会议召开,部署2...
专业文章丨跨境投资中对东道国法... 【珠海律师、珠海法律咨询、珠海律师事务所、京师律所、京师珠海律所】 (本文转载自北京市京师郑州律师事...
刚见完特朗普,泽连斯基称他将与... 【环球网报道】据美国哥伦比亚广播公司(CBS)等媒体报道,乌克兰总统泽连斯基与美国总统特朗普会晤后表...
亚特兰大0-1小胜国米,赛后评... 在意甲联赛第17轮的较量中,国际米兰在客场以1-0小胜亚特兰大,继续稳居积分榜首位。然而,赛后的评分...
詹姆斯24+5东契奇34+5+... 【搜狐体育战报】北京时间12月29日NBA常规赛,主场作战的湖人以125-101击败国王。艾顿11分...
原创 挑... 高市早苗政府近期对中国发起的一系列挑衅,似乎是一场注定要失败的豪赌。自从她11月7日发表了一些极具争...
最高法:助力完善破产制度,畅通... 最高人民法院12月29日发布7件人民法院惩治逃废债典型案例。据介绍,此次发布的典型案例覆盖面广,扩大...
黑龙江妇幼健康惠民政策再升级 人民网哈尔滨12月29日电 (记者张齐)近年来,黑龙江省卫生健康委员会扎实推进妇女儿童健康保障工作,...