javaGC垃圾回收机制参数配置

更新时间:2023-06-04 11:12:19 阅读: 评论:0

javaGC垃圾回收机制参数配置 JVM配置
-rver
-Xmx1024m
-Xms1024m
-XX:NewSize=256m
蜜蜂蛰了怎么办-XX:MaxNewSize=256m
-XX:PermSize=128m
狼王梦读书笔记摘抄-XX:MaxPermSize=128m
-XX:SurvivorRatio=8
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-
XX:+UConcMarkSweepGC
-XX:+UCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=5
-XX:CMSInitiatingOccupancyFraction=60介绍一种东西
-XX:CMSMaxAbortablePrecleanTime=5
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:MaxGCPauMillis=1500
此,你有两条路可以⾛
1、继续使⽤jdk的dynamicproxy,但不要禁⽌class卸载。
2、使⽤cglibproxy,复⽤代理类,避免⼤量⽣成的代理类。
行宫元稹加上-noclassgc,可使jvm不卸载加载的class
from:
my.oschina/linuxfelix/blog/133277
然⽽很多⼈都忽略了⽅法区也可以存在GC操作。这次悲剧的产⽣也是由于⾃⼰开始忽略这点导致的。要知道⽅法区的GC主要回收两部分内容:废弃常量和⽆⽤的类(注意这⾥的类和对象是两个不同的概念)。
判断⼀个类是否是⽆⽤的类需要满⾜下⾯3个条件:
1.该类所有的实例都已经被回收,也就是Java堆中不存在该类的任何实例
2.加载该类的ClassLoader已经被回收
3.该类对应的Java.lang.Class对象没有在任何地⽅被引⽤,⽆法在任何地⽅通过反射访问该类的⽅法
皂角菌
JVM可以对满⾜上述3个条件的⽆⽤类进⾏回收,这⾥说的仅仅是“可以”,⽽不是和对象⼀样,不使⽤了就必然会回收。是否对类进⾏回收,JVM提供了-Xnoclassgc参数进⾏控制。于是,我在Tomcat的J
vm参数⾥加上 -Xnoclassgc并限制 -XX:PermSize=128M  -XX:MaxPermSize=128M.重新启动Tomcat 后,上述“奇怪信息”就不在出现了,并抛出了OutOfMemory  PermGen space 异常。关于 OutOfMemory  PermGen space 异常。这⾥也有⼀个⾮常有趣的讨论,⼤家可以看下。
方便的的英文总结:
在⼤量使⽤发射、动态代理、cglib等框架⽐如Spring、hibernate等,都需要虚拟机具备类卸载的功能,以保证⽅法区不会溢出。如果限制类卸载功能及限制 PermSize⼤⼩,相信⽅法区很快就会溢出。所以那些“奇怪信息”也属于正常的输出。另外也可以通过调⼤ PermSize的值已保证有⾜够的空间来装载这些类信息,这样,“奇怪信息”就可能不会输出了。
幸福的起点
1.区分JVM的中永久代、新⽣代和⽼年代的概念。记住Full GC和GC都发⽣在堆中。
2.导致频繁的Full GC的原因是堆空间⼤⼩不够,但是奇怪的信息输出绝不是堆空间不⾜产⽣。
技艺精湛3.折腾⼀天算是浪费时间,但是从中也学到和巩固不少知识也算是因祸得福。

本文发布于:2023-06-04 11:12:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/984790.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:回收   法区   参数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图