Jvisualvm&内存模型剖析-JVM(五)

上篇文章代码讲解了tomcat加载以及gc回收流程。

Jvm内存模型剖析优化-JVM(四)
  • Jvisualvm

 

我们可以编写如上代码,之后打开jvm自带的工具jvisualvm。

如果我们看visual不会明显变化,则可以修改睡眠参数,时间改小。

当我们运行程序,通过visual工具可以看到visual GC的运行情况,如我们上篇文章所说,他会从Eden到s0到s1,s0和s1反复拷贝,直到代龄达到15次,则会到old,最后导致OOM。

(如果有的同学没有visual GC则需要去工具->插件自行安装)

 

当我们老年代里越来越多,放满会怎么办呢,会触发full gc,他回收的整个堆和方法区。

但因为我们代码里对象还在一直引用回收不了,于是发生了OOM。

整个gc的过程中,有STW(stop the world)机制,会暂停用户线程,当用户下单的时候,gc过程可能会触发STW机制,这时候用户体验会受影响,会感受到网络卡顿。

每个年代垃圾收集器是不一样的,后面会一一详解。

元空间是什么,jdk1.8之前叫永久代,之后叫元空间,直接在物理内存。所以方法区是在物理内存里。初始值是21m,最大的会把物理内存全部用完。

二、设置参数大小

堆:-Xms2048M -Xmx2048M 新生代:-Xmn1024M

方法区:-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M

设置元空间最大值(默认-1)和初始空间大小(默认21,字节为单位)

建议最大值和初始值元空间设置一样大。

栈:-Xss512k

栈里是给一个线程用的,所以设置小点

可以执行命令

Java -Xms2048M -Xmx2048M -Xmn1024M

-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M

-Xss512k -jar mic-eureka-server.jar

 

我们写代码实例-Xss设置的小点,则count打印的更小,因为栈内存变小了,这也意味着可以有更多的线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端从入门到精通

你的鼓励是我最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值