jvm
匠心零度
对技术非常热爱,特别是JVM,高并发、锁系列,以及全链路相关优化方面。
展开
-
Java内存溢出与栈溢出
一、背景知识1、JVM体系结构2、JVM运行时数据区3、JVM内存模型JVM运行时内存 = 共享内存区 + 线程内存区3-1、共享内存区共享内存区 = 持久带 + 堆持久带 = 方法区 + 其他堆 = Old Space + You转载 2017-05-12 11:01:17 · 4020 阅读 · 0 评论 -
Major GC和Full GC的区别是什么?触发条件呢?
作者:RednaxelaFX链接:http://www.zhihu.com/question/41922036/answer/93079526来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种:Partial GC:并不收集整个GC堆的模式Young GC:只收集y转载 2017-08-31 17:12:59 · 4046 阅读 · 2 评论 -
JVM菜鸟进阶高手之路十(基础知识开场白)
最近没有什么实战,准备把JVM知识梳理一遍,先以开发人员的交流来谈谈jvm这块的知识以及重要性,依稀记得2、3年前用solr的时候老是经常oom,提到oom大家应该都不陌生,那个时候也并没有从根本仅仅oom,由于对jvm不熟悉,只是去百度,到处都是配置jvm参数的,那个时候啥不懂,直接粘贴,但是并没有解决问题,通过这个就告诉我们作为开发人员也需要对jvm很熟悉才行,问题来了,很多人会说我的代码并没原创 2017-09-05 20:28:21 · 4877 阅读 · 13 评论 -
JVM 菜鸟进阶高手之路三
笨神大大分享:在微信小程序里面搜索:JVMPocket,这个小程序是笨神大大提供的,里面可以搜索相关JVM参数,用法。-XX:MaxTenuringThreshold,这个参数主要是设置YGC的时候,新生代的对象正常情况下最多经过多少次YGC的过程会晋升到老年代,注意这里表达的是最多,意思就是说某个对象其实并不一定要达到这个值才会晋升到old的,具体经过多少次ygc进入到old,这个取决于原创 2017-07-22 10:09:31 · 2811 阅读 · 3 评论 -
JVM 菜鸟进阶高手之路十一(eden survivor分配问题)
转载请注明原创出处,谢谢!问题这个Xmn设置为1G,,我用jmap -heap 看,这个Eden From To怎么不是一个整8:1:1的关系呢? 我看内存分配还是没变,我Xmn1g,感觉From、To应该都是102.4M才对,现在是102.375M。执行命令jstat -gc pid 1s 1结果:发现很奇怪,的确和我们相信的不一样,我觉得只有源码可以告诉我们他做了啥。查看源码:执行上面的例子原创 2017-09-13 22:59:10 · 2149 阅读 · 4 评论 -
JVM 菜鸟进阶高手之路九(解惑)
在第八系列最后有些疑惑的地方,后来还是在我坚持不懈不断打扰笨神,阿飞,ak大神等,终于解决了该问题。第八系列地址:http://blog.csdn.net/lirenzuo/article/details/77480092。关于MAT工具相关知识解惑MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件。但是比较主流的厂家和格式,例如 Sun, HP, SAP 所采用的 HPR原创 2017-08-24 14:50:05 · 3881 阅读 · 4 评论 -
JVM 菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
上次分析详细地址在:http://blog.csdn.net/lirenzuo/article/details/76257526以为结束了上次那个知识才想rmi问题,其实本次问题不是该问题但是也会有sys.gc fullgc问题。查看GC统计汇总情况:jstat -gcutil pid 3s 30参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题原创 2017-08-03 16:51:24 · 9909 阅读 · 6 评论 -
java二进制相关基础
转载请注明原创出处,谢谢!说在前面 之前在JVM菜鸟进阶高手之路十(基础知识开场白)的时候简单提到了二进制相关问题,最近在看RocketMQ的源码的时候,发现涉及二进制的内容蛮多,jdk源码里面也是有很多涉及到二进制相关的操作,今天这篇文章仅仅是扫盲篇,后续会介绍灵活运用篇。说明任何东西都有规范,提到JAVA就会提到2个规范,JAVA语言规范、JVM规范。JAVA语言规范主要定义JAVA的语原创 2017-12-05 12:12:02 · 760 阅读 · 0 评论 -
JVM菜鸟进阶高手之路十四:分析篇
以一个奇怪的题目现象作为切入点,把jvm相关知识融合分析给你一个不一样的体验。原创 2017-11-26 14:38:33 · 1175 阅读 · 0 评论 -
JVM菜鸟进阶高手之路七(tomcat调优以及tomcat7、8性能对比)
因为每个链路都会对其性能造成影响,应该是全链路的修改压测(ak大神经常说全连路)。本次基本就是局域网,所以并没有怎么优化,其实也应该考虑进去的。Linux系统参数层面的修改:1、修改可打开文件数和用户最多可开发进程数命令:ulimit -n 655350 ulimit –u 655350可以通过ulimit –a查看参数设置,不设置时默认为1024,默认情况下,你原创 2017-08-14 17:33:19 · 22216 阅读 · 11 评论 -
JVM菜鸟进阶高手之路二(JVM的重要性,Xmn是跟请求量有关。)
今天看群聊jvm,通常会问ygc合适吗? 阿飞总结,可能需要2个维度,1.单位时间执行次数,2.执行时间ps -p pid -o eitme 查看下进程的运行时间,17天才这么点ygc,正常,-o后面可以加很多东西,可以通过ps L查看可以加哪些定义总结性,3s一次ygc的频率,甚至频率更低,5s一次,7s一次,这是正常的;如果超过1s一次y原创 2017-07-21 15:56:35 · 3125 阅读 · 2 评论 -
面试为什么需要了解JVM
匠心零度 转载请注明原创出处,谢谢!说在前面如果你经常注意面试题,你会发现现在面试题多多少少会含有jvm相关的面试题,之前也把一些jvm面试题汇总了下:面试题系列一,那么为什么现在面试需要了解或者问面试题呢?主题谈谈自己的理解,概括为以下几个方面: - 的确很重要。 - 供大于求。 - 面试风气。下面就针对这几点谈谈。的确很重要随着互联网的发展...原创 2018-03-06 08:21:00 · 4862 阅读 · 1 评论 -
JVM菜鸟进阶高手之路十二(jdk9、JVM方面变化, 蹭热度)
转载请注明原创出处,谢谢!经过 4 次跳票,历经曲折的 Java 9 正式版终于发布了!今天看着到处都是jdk9发布了,新特性说明,心想这么好的蹭热度计划能错过嘛,哈哈,所以就发了这篇文章。目前jdk9和jvm9的规范都还没有出来,很多细节估计还不清楚,基本就是通过官方介绍,看的。所以各位看官莫急去首页下载jdk9,你会发现:不这么吓唬我们,我们一般不会这么快用的之后下载页发现和以前的略有不同,没原创 2017-09-22 19:22:39 · 2424 阅读 · 0 评论 -
JVM菜鸟进阶高手之路四
由于很多的jvm分析最好是基于gc日志的,所以添加参数如下即可:-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/app/applogs/gc.log原创 2017-07-26 20:55:43 · 1734 阅读 · 3 评论 -
系统学习java高并发系列三
首先需要说说线程安全?关于线程安全一直在提,比如StringBuilder和StringBuffer有什么区别? 经常就会出现关于线程安全与线程非安全,可能一直在提自己没有细细想想,如果忽然问你啥是线程安全的概念?可能你需要短暂停顿几秒,线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据,其实关于线程安全的定义我想不到好的,百度了下,也没有发现一个特别好的解释原创 2017-07-23 16:00:05 · 3040 阅读 · 2 评论 -
Btrace使用小结
BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的。BTrace的最大好处,是可以通过自己编写的脚本,获取应用的一切调用信息。而不需要重启应用!只要定义脚本时不作大死(比如查看谁调用了HashMap的put方法),直接在生产环境打开也没影响。1.简介项目地址:http://github.com/btrace转载 2017-08-02 13:20:06 · 3149 阅读 · 0 评论 -
JVM菜鸟进阶高手之路五
参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察2小时发现通过观察的确是由于System.gc导致的。system.gc其实是做一次full gcsystem.gc会暂停整个进程1小时1次FGC问题,该问题在高并发情况下对性能产生很原创 2017-07-28 15:04:55 · 2706 阅读 · 3 评论 -
JVM菜鸟进阶高手之路八(一些细节)
gc日志问题 查看docker环境的gc日志,发现是下面这种情况,很奇怪,一直怀疑是docker环境那里是否有点问题,并没有怀疑配置,之前物理机上面的gc日志都是正常那种。 表示很奇怪,后来飞哥告诉我,有没有PrintGCDetails这个参数呀?一看果然,加上之后gc日志就和我们以前看的正常格式一样了。Xmn问题 -Xms4g -Xmx4g -Xmn3g 使用cms回收器,查看gc日志原创 2017-08-22 14:46:57 · 2367 阅读 · 3 评论 -
一次与笨神,阿飞近距离接触修改JVM
今天在JVMPocket群里面看见,阿牛发了一个gc截图,之后ak47截图了说特别恐怖,我就觉得好奇,去看看服务情况,截图日志如下高手就是高手,就通过这个,直接提出1,就是达到old的92%的阈值了 不断做cms gc 2.估计是不断做system gc这些都是猜测,让执行jstat -gccause pid 看看情况,为什么说要执行gccause呢?尤其ygc没有,只有fgc原创 2017-07-20 20:02:10 · 6034 阅读 · 7 评论 -
ZGC这是要上天吗?
现在JVM部分回收器介绍可能我们目前在使用的是CMS垃圾回收器或者是G1垃圾回收器或者什么没有设置使用的是jdk默认的垃圾回收器。我们如何来查看我们目前默认使用的jdk垃圾回收器呢?可以使用如下命令:java -XX:+PrintCommandLineFlags -version我本地的jdk1.8.0_151默认的垃圾回收器是就是-XX:+UseParal...原创 2018-07-24 12:42:02 · 13554 阅读 · 0 评论