
GC
skiof007
http://my.youkuaiyun.com/lifetragedy
展开
-
jvm什么时候会触发full gc
除直接调用System.gc外,触发Full GC执行的情况有如下四种。1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError: Java heap space 为避免以上两种状况引起的FullGC,调优时应尽量做到让对象在Minor GC阶段被回转载 2016-07-06 15:26:25 · 15114 阅读 · 0 评论 -
jstat命令查看jvm的GC情况 (以Linux为例)
stat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]注意!!!:使用的jdk版本是jdk8. 类加载统计: Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:时间 编译统...转载 2019-05-23 10:12:25 · 513 阅读 · 0 评论 -
JVM的分区+查看GC对象是否存活+3种GC算法+7种垃圾收集器+如何减少GC次数
一、JVM的分区:1、程序计数器(私有)程序计数器是一块较小的内存分区,你可以把它看做当前线程所执行的字节码的指示器。在虚拟机的概念模型里,字节码解释器工作时,就是通过改变计数器的值来选择下一条需要执行的字节码指令。程序技术器为线程私有,每个线程都有它们各自的程序计数器,这样再多线程的情况下,线程之间的来回切换,也能正确找到上次切换时执行的位置。如果线程正在执行的是一个J...转载 2019-05-28 14:33:20 · 491 阅读 · 0 评论 -
JVM调优系列:(四)GC垃圾回收
跟踪收集算法:复制(copying):将堆内分成两个相同空间,从根(ThreadLocal的对象,静态对象)开始访问每一个关联的活跃对象,将空间A的活跃对象全部复制到空间B,然后一次性回收整个空间A。因为只访问活跃对象,将所有活动对象复制走之后就清空整个空间,不用去访问死对象,不需要标记骤,所以遍历空间的成本较小,但需要巨大的复制成本和较多的内存。标记清除(mark-sweep):收集器...转载 2019-05-28 14:34:31 · 219 阅读 · 0 评论 -
【jvm】使用命令行jmap手工触发fullGC
使用了jmap工具实现,手工触发fullGC,运维常备jmap -histo:live <pid>或者jmap -dump:live,file=dump_001.bin PID然后删掉dump_001.bin文件转载 2019-06-10 10:33:57 · 6423 阅读 · 0 评论 -
垃圾收集算法、垃圾回收算法、java垃圾收集器
目录1. 垃圾收集算法1)引用计数法2)根搜索法2. 垃圾回收算法1)复制算法2)标记-清除算法3)标记-整理算法4)分代收集算法3. java垃圾收集器新生代GC器:1)Serial垃圾收集器2)ParNew垃圾收集器3)Parallel Scavenge垃圾收集器老年代GC器1)Serial和Parallel Scavenge都有对应的老年代版本2)CMS垃圾收集器G1回收器4.java...转载 2019-06-27 15:04:54 · 191 阅读 · 0 评论