dockerfile tomcat 配置jvm参数_还说不知道jvm常用基本配置参数吗?

3f757fb82d962f722a329808edc033a0.png

一、你平时工作用过的jvm常用基本配置参数有哪些?

1、回顾堆内存初始大小

jdk1.8之后将最初永久代取消了,由元空间取代。

34459566271468ed0a2cb4e300e2f028.png

在jdk1.8中,永久已经被移除,被一个称为元空间的区域取代。元空间的本质和永久代类似。

元空间(java8)与永久代(java7)之间最大的区别在于:

永久代使用的jvm的堆内存,但是java8以后的元空间并不在虚拟机中而是使用本机物理内存

因此,默认情况下,元空间的大小仅受本地内存的限制。类的元数据放入native memory,字符串池和类的静态变量放入到java堆中,这样可以加载多少类的元数据就不再由MaxPermSize控制,而由系统的实际可用空间来控制。

代码案例:

package 

运行程序,输出:

2e567a1e7eca9749dae6993803d9f21d.png

2、常用基础参数栈内存Xss讲解

(1)-Xms:初始大小内存,默认为物理内存1/64 —— 等价于-XX:InitialHeapSize

(2)-Xmx:最大分配内存,默认为物理内存1/4 —— 等价于-XX:MaxHeapSize

(3)-Xss:设置单个线程的大小,一般默认为512K~102 —— 等价于-XX:ThreadStackSize

代码案例:

package 

运行程序后,执行查看

af2bcfc8eb1357d74b28f60213c71a6d.png

解决以上问题:

把参数-XX:MetaspaceSize=1204m改成-Xss128K

4a057a5aa3886419ce3d1cc72ca9ec2e.png

再次启动运行并执行命令:

7ec805d417ae149aa399aac0960ec959.png

原理:如-XX:ThreadStackSize=0时,代表用户系统出场默认值;

查看oracle官网资料:https://docs.oracle.com/javase/8/docs/index.html

999b2cf066e357e6bb32f4010136d368.png
1

2028f116d37f46695db888e03a334432.png
2

在java虚拟机中,栈管运行,堆管存储

7f65c150a19d598dca1427c17eade688.png

由栈空间有128,如图所示:

437c74fcc93bf0827450f24b622e973a.png

若无指定配置Vm参数,它的栈空间的值为0,这个问题我们又当如何解释呢?

我们可以根据java8的官网信息去验证:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html

13975e0ede9522f6d3b055a60fc8b5f4.png

其次,不管时java9、java10、java11、java12都是默认于平台。

https://docs.oracle.com/en/java/javase/11/tools/java.html#GUID-3B1CE181-CD30-4178-9602-230B800D4FAE

c4b055d73e47713eb27da5afb15ca59e.png
java10

https://docs.oracle.com/en/java/javase/12/docs/specs/man/java.html

29b45d68345c3a47b6df7413eafc4d37.png
java12

3、常用基础参数元空间MetaspaceSize

(1)-Xmn:设置年轻代大小

2-XX:MetaspaceSize:设置元空间大小

其中,元空间的本质与永久代类似,都是对jvm规范中方法区的实现。不过元空间与永久代之间最大的区别在于: 元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制

查看初始参数

-

95865567bb4a7d027429697643f3b1c3.png
1

运行程序后,如下图,发现会自定义参数打印数据(串行垃圾回收器)

bfbba94cbf74135cd483b1e17f0b238a.png

其中:

-XX:+UseSerialGC 串行垃圾回收器
-XX:+UseParallelGC 并行垃圾回收器 ( jdk1.8 默认)

运行的参数值:

//串行垃圾回收器

另一种配置参数:并行垃圾回收器

-

09fea7e6728bdcead423a47d3201038f.png

运行程序后,如下图:

4d4a07645bd962e7b13af48bbc0024d3.png

运行的参数值:

//并行垃圾回收器 ( jdk1.8 默认)

4、常用基础参数PrintCDetails回收前后对比讲解

(1)查看垃圾回收细节情况信息

-

启动程序:垃圾回收细节情况信息

a2b115a669336fa38daba3919da81c0c.png

若在生产环境中,出现另类的情况,比如说把垃圾回收内存爆出现象,配置参数

-

25f9090c77497d4592aa8d23f51b0a6a.png
//代码演示:

启动程序,控制台打印输出:

8214d81873161ee73381a3e411d9b39f.png

oom挂了

Exception 

一般了说,GC在新生区

fdf8d9f5b251234ff6541150ef6199f5.png
GC垃圾回收信息解读(针对控制台打印信息案例来看)

而Full GC在年老区

b20912f2628fa876618d2cfde8dd7124.png
Full GC垃圾回收信息解读(针对控制台打印信息案例来看)

5、常用基础参数SurvivorRation讲解

设置新生代中eden和S0/S1空间的比例默认:

-

假如:

-

SurvivorRation值就是设置eden区的比例占多少,S0/S1相同

代码案例演示:

配置jvm参数:

//配置串行垃圾回收

0727f231cdd7619361db53bcef13278f.png

启动程序,输出:默认值,参数没有做更改

f6d582d7bad493666e2f21c9f5399c75.png

若想要更改默认参数,在idea修改jvm的配置参数即可:

-

打印输出:

ec61d08b155ac58db991de10622f33e4.png

若想更改别的参数,比如设置为4

-XX:+PrintGCDetails -XX:+UseSerialGC -Xms10m -Xmx10m -XX:SurvivorRation=4  //4倍

打印输出:

cf60fe794e82f78bc89e6562786d1912.png

6、常用基础参数NewRation

配置年轻代与老年代在堆结构的占比默认,-XX:NewRation=2,新生代占1,老年代占2,年轻代占整个堆的1/3。
假如:-XX:NewRation=4,新生代占1,老年代占4,年轻代占整个堆的1/5。
NewRation值就是设置老年代的占比,剩下的1给新生代

代码案例演示:

配置jvm参数,串行垃圾回收信息

-

9dbe92f4159697c89b8c77855f472d24.png

打印输出:

9e13a0cd47c4e9281d9344531d4a764e.png

若想要更改默认参数,在idea修改jvm的配置参数即可,修改后新生代与老年代都会发生变化

-

打印输出:

6d61fd61305ead5b0e94170ccc571efc.png

若想要更改参数2

-

打印输出:

c1fb409cf750d5bc579bfb18b87bc1e2.png

7fe427b3bec889161be967ffd526209a.png

7、常用基础参数MaxTenuringThreshold

若我们在idea不配置虚拟机参数

9bb54c705141d898480feeaece450c2b.png

代码案例:

package 

启动程序,打印输出,查看

E:

e1547e50b5023430179356ecfcc21a59.png

注意:在java8默认参数的范围0~15,调优参数系统已经配置好了,若超过15系统不许,会出现错误。

如设置参数为20

-

运行报错信息,如图所示:java8限制了

082809d1e5c5e117e4a7b5c85b6ec8a5.png

不超过15即可,如设置参数为12

-

3e10ae19759a8dab577bf4abd7679586.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值