您的位置:首页 > 其它

JVM之GC以及优化

2018-02-28 05:30 267 查看
过完年之后感觉人生荒废 说好的不断学习无奈老婆家的习俗太多 什么办新郎官饭什么的赶场太多 根本没时间 都是开车下车吃饭看电影回家洗漱后已经是大半夜…哎呀 不是码农不懂我的苦 我说我想再自己钻研一下自己再学习学习探索探索 无奈人家不肯啊

现在趁着人家睡觉的时候偷偷跑出来 打开笔记本 写一篇博文也算是不负内心的一种行为吧 姑且如此

Java对比C/C++而言,JVM的存在可谓是一个比较良心的产物,对内存的管理相较于C/C++的手动申请->释放而言是比较友好的.开习惯了自动挡再回去开手动挡肯定是十分不适应的,毕竟时代在进步.然而JVM的这一举措方便了开发人员的同时也带来一些问题,如果对JVM的GC不熟悉或者对JVM的运行原理不熟悉的话,想当然地认为GC是万金油会引发很多问题,性能始终上不去,拼命用BTrace查找慢代码,找到了却又无从下手…

JVM我之前有一篇博文,其中简述了一下JMM,分代信息和内存划分,也简单写了一下GC.

在《对于JVM的一些理解》之中有简单介绍.

http://blog.csdn.net/unscdf117/article/details/78692476

对于GC而言光靠猜测肯定是不行的,如果想要对程序进行优化必须去读GC日志信息.理解GC日志是Java开发人员的必备技能之一.先设置一下GC日志的输出路径,我比较懒所以就直接在本机上设置了,设置方式如下图



此时会在对应路径上生成一个日志文件专门记录GC日志.

我使用IDEA进行开发,在IDEA当中也有JVM的运行参数可以设置,在Run/Debug Configurations中就可以设置 如图:



运行之后也会产生对应的日志文件.

打开GC日志看看:



最左边的数字是JVM启动之后GC事件的发生的时间戳,后面有GC和FullGC的一些区别,这里GC括号内定位失败 - - , FullGC是MetaData GC,这里是我的锅,我是使用默认的JDK配置,这是我的锅…

先写到这….我被骂了 哈哈哈哈
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: