随笔分类 - jvm
摘要:最近一段时间一直在研究热部署,热部署中涉及到一个比较头痛的问题就是查内存泄露(Memory Leak),于是乎在研究热部署的过程中,干的最多的一件事就是查内存泄露。 查内存泄露,最开始尝试用JDK自身的工具去解决这件事,通过jstat和jmap,去发现是否有内存泄露,当判断有内存泄露存在时,试图要去
阅读全文
摘要:一、安装 1.1、在Eclipse上安装MAT插件,步骤如下: 点击Help,Install New Soft,就出现了以下Install界面:然后我们点击ADD,在弹出的框中填上Mat插件的地址:http://download.eclipse.org/mat/1.6/update-site/,确定
阅读全文
摘要:2016-05-06中午11:56,收到“[sentry2]2016-05-06 11:56:09 xxxxxxhost xxx.xxx.xxx.xxx 内存使用已达到90.18%”报警。首先在脑海浮现的, 应该哪里出现内存泄漏了。 一、确认问题 马上到 Sentry 监控系统查看了该服务的“ 服务
阅读全文
摘要:-XX:+UseConcMarkSweepGC 手动指定使用CMS收集器执行内存回收任务。 开启该参数后会自动将-XX:+UseParNewGC打开。即: ParNew(Young区用)+CMS(Old区用)+Serial Old的组合。 -XX:CMSlnitiatingOccupanyFract
阅读全文
摘要:在 tomcat/bin/catalina.sh 的 第一行#!/bin/sh 下添加 JAVA_OPTS="-server -Xms512m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -Djava.aw
阅读全文
摘要:序 本文主要记录一些jvm参数的使用陷阱。 -XX:MaxTenuringThreshold -XX:MaxTenuringThreshold只对串行回收器和ParNew有效,对ParallGC无效。存活次数在串行和ParNew方式中可通过-XX:MaxTenuringThreshold来设置,Pa
阅读全文
摘要:concurrent mode failure是什么? CMS垃圾收集器特有的错误,CMS的垃圾清理和引用线程是并行进行的,如果在并行清理的过程中老年代的空间不足以容纳应用产生的垃圾(也就是老年代正在清理,从年轻代晋升了新的对象,或者直接分配大对象年轻代放不下导致直接在老年代生成,这时候老年代也放不
阅读全文
摘要:话题引入 让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重讲的内容: ParNew and CMS "Concurrent Mark and Sweep" 是CMS的全称,官方给予的名称是:“Mostly Co
阅读全文
摘要:Java中的GC有哪几种类型? 参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集。 UseParNewGC 打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集。 Us
阅读全文
摘要:当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。 1、Java heap space 当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 ja
阅读全文
摘要:https://blog.csdn.net/u013735734/article/details/102930307 https://alibaba.github.io/arthas/install-detail.html#id2
阅读全文
摘要:Arthas 是一款 Java应用开源诊断工具,由于其强大的问题排查及诊断能力,自其开源以来广受开发者的关注和使用,多次登顶 GitHub Trending,并得到国内多家技术媒体的推荐分享。 一. 定制化功能改造 Arthas 可以通过简单的命令交互模式,接入运行的 JVM,快速定位和诊断线上程序
阅读全文
摘要:什么是CMS? Concurrent Mark Sweep。 看名字就知道,CMS是一款并发、使用标记-清除算法的gc。 CMS是针对老年代进行回收的GC。 CMS有什么用? CMS以获取最小停顿时间为目的。 在一些对响应时间有很高要求的应用或网站中,用户程序不能有长时间的停顿,CMS 可以用于此场
阅读全文
摘要:不要超过32G 事实上jvm在内存小于32G的时候会采用一个内存对象指针压缩技术。 在java中,所有的对象都分配在堆上,然后有一个指针引用它。指向这些对象的指针大小通常是CPU的字长的大小,不是32bit就是64bit,这取决于你的处理器,指针指向了你的值的精确位置。 对于32位系统,你的内存最大
阅读全文
摘要:1对象存活算法引用计数法 简介:判断对象是否存活算法,讲解对象垃圾回收对象是否回收判断 - 引用计数法存在的特点分析 - 优缺点 * 引用计数收集器可以很快的执行,交织在程序运行中。对程序需要不被长时间打断的实时环境比较有利。 * 无法检测出循环引用。如父对象有一个对子对象的引用,子对象反过来引用父
阅读全文
摘要:JVM的知识这里总结的很详细:https://github.com/doocs/jvm/blob/master/README.md,因此在本博客也不会再对其中的东西重复总结了。 现在很多文章关于JVM内存结构的说法模糊不清,这里记录一下以前的一些比较模糊的JVM相关概念的重新认识。都是经过多处考证对
阅读全文
摘要:-XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:
阅读全文
摘要:参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集。 UseParNewGC 打开此开关参数后,使用ParNew+Serial Old收集器组合进行垃圾收集。 UseConcMarkSweepGC
阅读全文
摘要:这个问题的答案取决于JDK版本,在2012年默认值改变过一次。 请参考:JDK-6679764: enable parallel compaction by default这个改进使得HotSpot VM在选择使用ParallelGC(-XX:+UseParallelGC 或者是ergonomics
阅读全文
摘要:查看JVM使用的默认的垃圾收集器 阅读目录 一、查看步骤 二、验证下,是不是那么回事吧 三、Ps Scanvenge的简要介绍 四、Serial Old的简要介绍 五、Serial Old和Ps MarkSweep的区别 回到顶部 一、查看步骤 cmd执行命令: java -XX:+PrintCom
阅读全文