我是靠谱客的博主 从容裙子,最近开发中收集的这篇文章主要介绍5分钟掌握JVM常用选项及相关知识,工作面试够用了,如何保证高可用1) -Xms4G解释2) -Xmx4G解释3) -Xmn1G解释总结Mybatis源码解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

针对上面这些问题,我们应该从实践出发,带着目的学习。这样不但记得牢、而且一开始就面向实践,理解得也要比单纯的看资料深入。在这篇文章中,就以我们公司的某个后端服务的java启动选项为例,介绍这些jvm选项,逐个解释这些选项的作用,及相关的JVM内存管理、GC或类加载等知识。

我们公司某一个大流量的后端服务配置了这些jvm选项(这些选项也是目前国内互联网公司经常用到的),如下图所示。

5分钟掌握JVM常用选项及相关知识,工作面试够用了

1) -Xms4G解释

5分钟掌握JVM常用选项及相关知识,工作面试够用了

这个配置项对应的JVM选项是 -Xms,其中,4G是参数值。

我们知道java命令是用来启动java虚拟机执行java代码的。java命令支持很多选项,在这些选项当中,以"-X"开头的,都是Java虚拟机选项;不以"-X"开头的选项,不是传给Java虚拟机的,例如"java -jar filename.jar"中的"-jar"不是传给JVM的。

所以,-Xms4G中的-X代表这是一个jvm选项,m代表memory,对于jvm而言memory就是堆;s是smallest,最小的意思。-Xms4G代表把JVM的堆的最小值设为4G。

jvm堆随着java程序的运行不断增大,因此,这里的堆最小值也是jvm初始堆大小。当jvm运行一段时间后,堆大小超过初始值,这里配置的值其实没什么用了。

所以,最小堆大小或初始堆大小只影响JVM启动阶段,对后续jvm运行没什么影响

那么,在实际运用中,-Xms应该配置成多少呢?假如服务器是8核16G,先设置成10G,即物理内存的一半再多加一些(建议跟最大堆大小设置成相同值,这样可以减少刚部署阶段的fullgc次数),然后运行一段时间再看容器的监控,看容器还剩多少内存。如果还剩很多,再调大一些,例如设置成12G,直到充分利用容器物理内存为止。

2) -Xmx4G解释

对应的JVM选项是 -Xmx,它跟前面-Xms类似,配置方法完全一样。

5分钟掌握JVM常用选项及相关知识,工作面试够用了

-Xmx4G中,m代表memory,x是maximum,最大的意思。-Xmx4G就是把JVM的堆的最大值设为4G。

前面说过,随着java程序运行,堆会从初始值开始稳步增长,当达到最大值以后就不再增长,以后主要靠GC来回收内存。所以,堆最大值的设置要比最小值谨慎,配置小了,程序内存不够用,频繁GC;配置得太大,每次GC时间比较长,程序有停顿现象(也跟垃圾回收器的选择有关)。对后端服务而言,堆最大值一般与堆最小值配置成一样的即可。

实际工作中,-Xmx的值怎么选?按照前面-Xms的配置方法操作即可。如果每次GC时间较长,说明堆配置值的大了,适当减小堆最大值。

3) -Xmn1G解释

这项配置对应的jvm选项是-Xmn,即把young generation(新生代)设置为1G。

5分钟掌握JVM常用选项及相关知识,工作面试够用了

-Xmn中,m代表memory(如前所述),字母n代表什么呢?它代表nursery(托儿所,存放新出生的婴儿,即新创建的对象)。-Xmn1G就是把新生代固定设置成1G。另外,新生代也可以像前面一样,最大、最小值分开设置,用-XX:NewSize来设置新生代的初始大小(最小值),用-XX:MaxNewSize设置新生代的最大值,这里-Xmn相当于同时指定-XX:NewSize和-XX:MaxNewSize。

总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

送大家一份资料,戳这里免费领取

Mybatis源码解析

tis源码解析

[外链图片转存中…(img-VkVtsY4P-1628564600494)]

最后

以上就是从容裙子为你收集整理的5分钟掌握JVM常用选项及相关知识,工作面试够用了,如何保证高可用1) -Xms4G解释2) -Xmx4G解释3) -Xmn1G解释总结Mybatis源码解析的全部内容,希望文章能够帮你解决5分钟掌握JVM常用选项及相关知识,工作面试够用了,如何保证高可用1) -Xms4G解释2) -Xmx4G解释3) -Xmn1G解释总结Mybatis源码解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部