美文网首页
java gc 总结

java gc 总结

作者: 清风89 | 来源:发表于2017-08-22 13:08 被阅读0次

1. G1适用于大内存,缺陷是稳定性待检验。

1.1 jvm分配内存超过8G,其中Eden超过4G,推荐使用G1垃圾回收器; Eden区使用复制算法回收内存,G1采用标记-整理;G1把内存划分为小块,优先回收有最大回收度的区域。

1.2 目前市面上小内存JVM大都采用CMS和paraNew配合使用,paraNew是serial的多线程版本。CMS对老年代的回收采用标记-并发清除,再次标记(并发部分新产生垃圾的标记),清理。

1.3 JAVA_OPTS指定GC日志和日志输出格式

-Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps


2. 内存回收时候的引用关系

2.1 引用分为

强引用(不回收)

软引用(内存充足不回收,不足回收)

弱引用(回收)

虚引用(回收)

2.2一般业务代码中使用强引用,其他引用很少使用,其他引用可以在jdk中发现。

强引用举例:

赋值运算,Object o = new Object();

软引用举例:

SoftReference s =new SoftReference(String.class);

软引用使用场景,如应用内缓存,方便内存回收。


3.因为引用计数解决不了循环应用,所以使用引用可达性来决定是否回收内存

reboot:

虚拟机栈中引用的对象(因为在运行,所以不被回收)

类静态变量引用的对象(类静态变量是所有实例共享的,类不回收,静态变量不会被回收;类的所有实例被回收后,并且类的类加载器也被回收,并且不能通过反射使用类,满足3个条件类才会被回收,然后类静态变量才能被回收)

常量引用的对象

JNI引用的对象(比如数据库连接)


附2中jvm参数配置

CMS配置参考:

-Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:+DisableExplicitGC -XX:-UseParNewGC -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc.log -XX:+PrintGCDetails -XX:-OmitStackTraceInFastThrow -XX:-UseLargePages 


G1配置参考:

-Xms8g -Xmx8g -Xmn4g -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8 -XX:+DisableExplicitGC

-verbose:gc -Xloggc:/dev/shm/mq_gc_%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -XX:+AlwaysPreTouch -XX:MaxDirectMemorySize=15g -XX:-UseLargePages -XX:-UseBiasedLocking

参考:

http://www.cnblogs.com/ityouknow/p/5614961.html

相关文章

  • 6.HotSpot中的GC收集器简介

    目录 概述 新生代GC 老年代GC java789默认GC搭配 垃圾收集器相关参数总结 概述 整理归纳HotSpo...

  • java gc 总结

    1. G1适用于大内存,缺陷是稳定性待检验。 1.1 jvm分配内存超过8G,其中Eden超过4G,推荐使用G1垃...

  • Java GC & Android GC学习索引

    目录 Java GC 知识 Android GC 知识 Android 内存优化 工具使用 Java GC 知识 ...

  • JVM系列(五):Java GC 分析

    Java GC就是JVM记录仪,书画了JVM各个分区的表演。 什么是 Java GC Java GC(Garbag...

  • jvm系列:Java GC 分析

    Java GC就是JVM记录仪,书画了JVM各个分区的表演。 什么是 Java GC Java GC(Garbag...

  • jvm系列(五):Java GC 分析

    ​Java GC就是JVM记录仪,书画了JVM各个分区的表演。 什么是 Java GC Java GC(Garba...

  • Java GC 相关总结

    GC的两种判定方法 引用计数 与 可达性分析 引用计数: 很多教科书判断对象是否存活的算法是这样的:给对象中添加一...

  • java GC 简单总结

    程序计数器 (programs counter register) 本地方法栈 (native method st...

  • Java面试重难点剖析(不断更新)

    Java面试重难点剖析(不断更新) 1、高并发访问数据库优化方法 2、 java finalize方法总结、GC执...

  • Java内存模型和GC机制

    最近学习Python的GC机制时,想到了java的GC,忘得差不多了,(⊙﹏⊙)b!!这里便做一下回顾总结。推荐周...

网友评论

      本文标题:java gc 总结

      本文链接:https://www.haomeiwen.com/subject/onzkdxtx.html