前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java虚拟机的面试准备(二)什么是调优,如何调优

Java虚拟机的面试准备(二)什么是调优,如何调优

作者头像
一写代码就开心
发布2021-09-14 10:52:33
2870
发布2021-09-14 10:52:33
举报
文章被收录于专栏:java和python

目录

调优工具

下载jar包

在这里插入图片描述
在这里插入图片描述

这个阿里巴巴的jvm的调优工具,这个就是一个jar包,只要下载下来,执行这个jar包就可以了

Arthas启动的前提是要启动你的java项目,因为Arthas启动时会自动扫描机器上运行的java项目

执行代码并且启动jar包

在这里插入图片描述
在这里插入图片描述

以上是我们运行的代码

在这里插入图片描述
在这里插入图片描述

以上是官网

因为这个工具是监控我们的Java代码,所以启动之前要执行Java代码

代码语言:javascript
复制
java -jar arthas-boot.jar

启动这个jar包,那么我们看见的就是当前本级里面,有多少的Java程序执行 我们自己写的Java程序在第三个

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

想要监控哪个,就输入序号

在这里插入图片描述
在这里插入图片描述

出现以上的logo,就已经启动成功了。具体使用看官网,这个只是一个工具,帮你找问题

什么是调优

减少垃圾回收(GC),最核心的就是减少full gc,减少性能,并且避免内存溢出

在这里插入图片描述
在这里插入图片描述

当老年代也满了,就会生成一个full gc ,这个垃圾回收器就会全局收集垃圾,但是全局没有垃圾,但是还有对象一直创建,那么就会内存溢出

为什么调优

因为在进行垃圾回收的时候,会产生stw, stop the word 停止用户线程,就是一个时间只能有一个线程执行,当进行垃圾回收的时候,用户线程就会停止,给用户的 体验不好。比如

我们下订单,有时候卡一下,因为垃圾回收器正在执行,所以我们的下订单的用户线程就会停止。这个体验是不好的,所以,我们要减少full gc

为什么在进行垃圾回收的时候,要停止用户线程

因为如果不停止用户线程,本来垃圾回收器已经根据可达性分析算法找到了垃圾,已经进行完垃圾回收了,但是用户线程也结束了,其他的也标为垃圾了,难道GC还要再找一遍嘛,这个性能就变差了,所以进行垃圾回收的时候,用户线程得停止,这样性能高。

什么情况会发生full gc

当我们下订单的时候,高并发,每秒可能有300个订单,每个订单对象的大小是60M,刚开始的运行时数据区的大小为

在这里插入图片描述
在这里插入图片描述

full gc 的原因是 老年区的垃圾多了,放不进去了,所以就得full gc,full gc 一般是很长的时间还会有,如果很短时间就一次,那么就有问题了,我们就需要调优。

当产生的对象,伊甸园区也满了,只能到幸存区,但是这个对象的大小大于幸存区大小的一半,那么就会直接到老年区,如果短时间内,有很多的对象都很大,都直接去了老年区,那么老年区就会有full gc。

这种情况不可以,我们就需要调优

如何解决这种情况的full gc

减少老年区的大小,增加伊甸园区和幸存区的大小。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/09/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 调优工具
    • 下载jar包
      • 执行代码并且启动jar包
      • 什么是调优
      • 为什么调优
      • 为什么在进行垃圾回收的时候,要停止用户线程
      • 什么情况会发生full gc
      • 如何解决这种情况的full gc
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档