温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GC垃圾回收

发布时间:2020-06-08 11:00:39 来源:网络 阅读:530 作者:黄燕平 栏目:软件技术
  1. gc=full gc +young gc

  1. Java jvm 内存=堆内存+非堆内存

  2. 堆内存(-Xms-Xmx=年轻代(-Xmn+年老代

-Xms,初始分配内存,-Xmx最大分配内存,一般情况下设置成一样的值

  1. 年轻代=Eden+s0+s1

  2. 非堆内存=持久代(-XXPermSize -XX:MaxPermSize+code cache(-XX:reservedcodecachesize)

-XX:PermSize(初始值大小)-XX:MaxPermSize(最大值)

jvm内存模型图】

GC垃圾回收

  1. gc:自动检测和释放不再使用的内存。(垃圾回收)

  2. Minor gc:频率快是正常 ,也叫young  gc

  3. Major gc:尽可能让他频率少【重点关注】  ,也叫full gc

  4. 持久代(Perm):使用的class对象

  5. Jvm的生命周期:①一个对象,首先放置在Eden区,结果发现需继续使用,不能进入gc回收,则会放置在s区,s0s1随意。②如果放在s0区,过一段时间仍不能gc回收,则会放置在s1区③再过一段时间仍不能回收,则会存放在年老代区域。④在年老代存放很长时间后,可能被major gc回收,也可能继续存活

  6. Jvm内存参数设置

  • -Xms-Xmx设置为一样的值,设置为可用内存的80%

  • -Xmn设置为堆内存的3/8

  • -XX:PermSize(默认为物理内存的1/64)-XX:MaxPermSize(默认为物理内存的1/4)

  1. Jvm公共参数配置

  • -server服务器模式,一定要放在所有参数之前

  • -Xss:指定每个线程占的大小(建议不要超过1M

  • -XX:SurvivorRatio:设置年轻代里面Eden区和s区的大小比值

  • -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=path_addressJVM崩溃的时候会打印出heap dump

  • -XX:+AggressiveOpts:启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加入的优化技术(如果有的话)

  • -Djava.awt.headless=true:一般放在最后,主要是解决图表不兼容

  1. gc的类型

  • Serial GC:适用内存占用比较少的应用,性能最差

  • Parallel GC:年轻代多线程,年老代使用单线程

  • Parallel Old GC:年轻代和年老代都使用多线程收集垃圾

  • CMS:多线程并发回收垃圾,适用于不能忍受长时间停顿要求快速响应的应用,比较常用,最好和-XX:+UseParNewGC一同使用

  • -XX:+UseG1GC

  1. gc相关参数

  • -XX: +DisableExplicitGC:禁止使用System.gc

  • -XX:+PrintGCTimeStamps -XX:+PrintGCDetails Xloggc:<filename>打印gc回收的详情日志

  • -XX:+UseGCOverheadLimit:让程序提前结束,达到预警目的

  • -XX:+UseCMSCompactAtFullCollection:对存活对象进行整理,使内存碎片减少


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI