记一次JVM调优

/ JavaCode / 没有评论 / 310浏览

老惯例,先说下场景:

  1. 直接使用java -jar xxxx.jar 启动jar包之后,退出来shell,jar包就停止了运行。 那么这个问题怎么解决?不可能电脑一直在运行啊,还一直开着那个shell的窗口,这时候就出现了nohup这个命令,jar包的启动方式变为了nohup java -jar xxxx.jar ,使用这样的方式进行启动的话,会在jar包的目录下产生一个nohup.out文件,这个文件保存的是运行打印的东西,可以使用cat等命令进行内容的查看,文件的增量较大。
  2. 运行了jar包工程之后,使用域名对博客访问很慢,什么原因?有什么优化方案吗?在主机上安装了APPNODE对主机运行环境进行检测,可以看到在系统具有三个进程的时候,主机就已经处于高负载状态了,但是此时的内存使用率还不足10%,存储占有量也不足10%,主机带宽是百兆带宽,最重要的一点,此时在Windows下ping主机,报文发送和接收速度处于较快水平,那这么说来就不是主机访问的问题了,也就是说,访问zhangruibin.com解析的IP访问这步不会影响访问效率,那就只能是jar包所运行的独立环境,也就是JVM环境有问题,壳子太小,那就扩展壳子吧,也就是在启动jar包的时候设定jvm参数:-Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m(注:设定的参数值大小,根据自身实际情况进行分配,博主的主机是2G内存,上面就跑了个博客jar包和一点其他的不占内存的东西,所以直接分配512m也没心理压力)这时候的启动jar包的命令就成了:nohup java -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar xxxx.jar 这时候再启动访问项目就处于正常水平了。
  3. 访问的时候发现静态资源(图片)加载的时间较长,因为图片都是未经压缩的五码大图,那么这方面的优化就要因人而异的,可以选择把图片这些静态资源放在云服务器上,比如七牛云(PS:七牛云需要手持身份证照片进行认证,所以我就没用啦),或者自己搭一个FTP服务器,然后使用nginx就行实现直接链接形式访问啦,只要你网速够快,就可以秒开。

综上所述:以上所谓JVM调优纯属皮毛,真正的调优方式如下:

  1. 先使用jconsole之类的工具对正在运行的项目进行监控,查看项目的线程运行数和堆栈内存使用量,具体的jconsole使用方法,可以参考这个链接,博主这里就不多做赘述了:jconsole使用方法

  2. 根据系统GC来根据公式对设定的参数进行工式换算,这在网上也是有资源的,博主这里推荐一个:GC及调优 这个博主写的还是比较全面的,所以我就不在这里献丑啦。

JVM调优,看起来很是神秘,也比较高大上,但是,入门之后你会感觉就那样,就是根据系统情况分配jvm内存。 然而....知道怎么设置jvm参数大小容易,设置出能让系统运行的参数也容易,难的是,这几个值的大小,设置为多少才是最合适的,即能尽可能少的占用系统内存,又能最大程度上近乎完美的运行项目,这就需要做一些知识的累积了,比如对项目的各部分的理解了解,并发量的承受力,系统内存占用分配,系统GC日志等等.

亲,博主的微信公众号

‘程序员小圈圈’开始持续更新了哟~~

长按图片识别二维码或者微信扫描二维码或者直接搜索名字 ‘CXYXQQ’ 即可关注本公众号哟~~

不只是有技术哟~~

还可以学下教育知识以及消遣娱乐哟~~

求关注哟~~