标签目录:GC

以下是与标签 “GC” 相关联的文章

如何查看线上的Java进程使用的GC收集器类型

使用下面的命令可以查看是否使用了指定类型GC收集器,结果中有+号则使用这种收集器,否则有-号表示没有使用这个收集器。 并行: jinfo -flag UseParallelGC 13727jinfo -flag UseParallelOldGC 13727(fallback to 串行) 并发: jinfo -flag UseParNewGC 13727(fallback to 串行)jinfo -flag UseConcMarkSweepGC 137……

GC堆最大最小内存随笔

今天公司里面又有人讨论Xms和Xmx设置成一样好呢?还是不一样好呢?这是一个老生常谈的问题,当然,也有很多人知道设置成同样的值会更好些,可是又不知道为什么,还有些人尽管告诉他们设置成一样的好,他们也不太相信,为了能更容易说服一些在技术上比较倔强的人,在网上随便搜索了一下资料,总结如下: Xms和Xmx应该设置……

【未完待续】Java后台线上服务优化小记

最近,一直负责开发公司内部的Restful服务框架,并与公司的代码审核和CI上线流程进行整合,整合的过程中需要开发线上Restful服务的启动脚本,于是,发现一些线上的服务配置没有进行过优化,因此,简单的做了下压测,尝试和对比,对线上服务进行了简单的优化,优化过程记录如下: 1. 原先GC堆的大小设置为-Xms128m -Xmx1g,……

【转载】【经典】经典GC系列文章

本文为转载的系列文章,个人认为非常经典,如果你真的想了解GC,一定读完这五篇文章。 JVM系列一:JVM内存组成及分配 JVM系列二:GC策略&内存申请、对象衰老 JVM系列三:JVM参数设置、分析 JVM系列四:生产环境参数实例及分析【生产环境实例增加中】 JVM系列五:JVM监测&工具 下文为其中的第三篇,包括所有的GC参数以……

JDK启动时检查设置的最大堆内存

大家都知道Xms和Xmx是设置JVM堆的最小值和最大值,给人的印象是启动时候只要有Xms这么大的内存既可,随着内存占用变大,会占用更多的内存,那么如果启动的时候系统没有Xmx这么大的内存,但是有Xms这么大的内存,Jvm会继续运行吗? 答案是No,如果Jvm启动的时候发现Xmx大于系统总体内存,则提示这个内存设置值大于系统可表……

使用CMS垃圾收集器产生的问题和解决方案

在之前的一篇文章《CMS vs. Parallel GC》里通过实验的方式对比了并行和并发GC的优缺点,在文章结尾提到,CMS并行GC是大多数应用的最佳选择,然而, CMS并不是完美的,在使用CMS的过程中会产生2个最让人头痛的问题: 1. promotion failed 2. concurrent mode failure 第一个问题promotion failed是在进行Minor GC时,Su……

CMS vs. Parallel GC

GC策略在G1收集器还没有成熟,并且没有得到广泛应用的情况下,目前主要有串行,并发(CMS)和并行(Parallel)三种,其中串行主要应用在客户端的实例中,在CPU资源比较稀缺的情况下,适合使用串行GC,这样可以避免过多的线程切换浪费系统资源,从而可以达到较高的性价比,但是对于高并发的服务器系统,并发和并行垃圾收集策略……

JVM GC调试工具

1. JConsole 2. Visual VM 3. Eclipse MAT 4. JProfiler – http://www.ej-technologies.com/products/jprofiler/overview.html 5. Yourkit – http://yourkit.com/ – 需要使用jvm agent, 非开源有破解 – 参考更多介绍:http://zhwj184.iteye.com/blog/764575

GC参数列表

默认的GC收集器 启动模式 新生代GC方式 旧生代和持久带GC方式 client 串行 串行 server ParNew CMS GC参数列表 参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. -Xmx 最大堆大小 物理内存……

Hotspot JVM GC算法和垃圾收集器

垃圾回收算法 引用计数 – 不能识别循环以来,MS COM Smart Pointer使用,或者教学上使用。 拷贝(Copy-Stop) – Jvm新生代使用,适合朝生夕灭的对象。 标记清除(Mark-Sweep) – CMS老年带默认使用 标记整理(Mark-Sweep-Slide Over) – CMS 老年代通过配置可以使用,适合大对象,生命周期长的对象。 ……

让GC日志打印可读的时间戳

1<code>-XX:+PrintGCTimeStamps -----&gt; -XX:+PrintGCDateStamps 很多线上Java服务器使用-XX:+PrintGCTimeStamps选项打印GC时间,这个选项记录的是Jvm启动时间为起点的相对时间,也就是JVM启动后的毫秒数,可读性较差,不利于定位问题,使用-XX:+PrintGCDateStamps记录的是系统时间,可以结合业务情况或者用……

如何强制JVM执行GC?

在一些业务场景下,用户难以忍受Full GC所带来的长时间响应停顿,这种情况下可以选择在非业务时间手工执行GC,以免老年代过大而导致Full GC执行后stop-the-world时间过长,还有一些情况下,我们需要手工的执行GC,来观察GC的回收情况,从而来排查线上的内存问题,因此,我们需要找到一个简单方便的方法来手工调用GC,今天……