ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

jvm学习-3.GC与JVM分代模型

2021-06-28 10:31:29  阅读:179  来源: 互联网

标签:堆中 永久 XX 分代 GC 内存 jvm PermSize


1.什么是垃圾

一般情况下在出栈时,该方法所引用的实例对象就变成了没有任何地方指向他,变成了一个未被引用的对象

定义:如果某个实例对象没有任何一个方法的局部变量指向他,也没有任何一个类的静态变量,包含常量等地方指向他就称之为堆中的垃圾

2.什么时候触发GC

对于堆中的垃圾是在新建对象的时候,发现堆中内存不足时才会去触发GC

GC的内存区域包含了堆,方法区

在方法区中的类变量没有任何使用的情况下才会被GC

GC应当保持频率越少越好

3.jvm分代模型

分为新生代,老年代,永久代

新生代和老年代存在于堆内存中

永久代存在于方法区(1.8以后为元数据区)

刚创建出来的对象绝大部分都是在新生代

默认会将15次以上的对象放入老年代

另外虚拟机栈是用不到GC的因为在出栈的时候,相应的局部变量等数据都会被直接删掉

4.JVM内存核心参数

堆内存配置

XMS java堆内存大小

XMX java堆内存的最大大小

XMN java堆中新生代的大小

XMS-XMN 就是老年代的大小了

方法区配置

XX:PermSize 永久代大小

XX:MaxPermSize 永久代最大大小

XSS 每个线程的栈内存大小

一般堆内存和堆最大内存是一致的

XMS等于XMX

一般永久代大小也是等于永久代最大大小的

XX:PermSize等于XX:MaxPermSize

配置时

-Xms512M -Xmx512M -Xmn256M -Xss1M (堆和栈配置)

-XX:PermSize=128M -XX:MaxPermSIze=128(永久代配置)

配置模板:

-Xms4096M -Xmx4096M -Xmn3072M -Xss1M  -XX:PermSize=256M -XX:MaxPermSize=256M -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFaction=92 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSParallelInitialMarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\test\dump\test.hprof

-XX:+UseParNewGC 指定parnew做为ygc回收器

-XX:+UseConcMarkSweepGC 指定cms做为fullgc回收器

-XX:CMSInitiatingOccupancyFaction 为空间担保百分比 老年代超过92%触发fgc

-XX:+UseCMSCompactAtFullCollection 开启内存碎片整理

-XX:CMSFullGCsBeforeCompaction 多少次full gc之后做一次内存整理 默认是0也就是每一次fullgc之后就做一次内存整理 这个内存整理也是会触发stw停止所有线程一段时间

-XX:+CMSParallelInitialMarkEnabled cms初始标记阶段开启多线程标记默认是开启cpu的核心数

-XX:+CMSScavengeBeforeRemark 在CMS 重新标记阶段前启动一次ygc

-XX:+DisableExplicitGC 禁止显式执行GC避免代码中的System.gc()

-XX:+HeapDumpOnOutOfMemoryError 开启堆内存溢出时的快照

-XX:HeapDumpPath=D:\test\dump\test.hprof 快照存放位置

标签:堆中,永久,XX,分代,GC,内存,jvm,PermSize
来源: https://blog.csdn.net/qq_34124558/article/details/118295419

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有