JVM
文章平均质量分 82
小星有大理想
这个作者很懒,什么都没留下…
展开
-
JVM学习四
1、报表异常 | JVM调优有一个报表系统,频繁发生内存溢出,在高峰期间使用时,还会频繁的发生拒绝服务,由于大多数使用者是管理员角色,所以很快就反馈到研发这里。业务场景是由于有些结果集的字段不是太全,因此需要对结果集合进行循环,并通过 HttpClient 调用其他服务的接口进行数据填充。使用 Guava 做了 JVM 内缓存,但是响应时间依然很长。初步排查,JVM 的资源太少。接口 A 每次进行报表计算时,都要涉及几百兆的内存,而且在内存里驻留很长时间,有些计算又非常耗 CPU,特别的“吃”资源。而原创 2022-06-17 20:52:45 · 296 阅读 · 1 评论 -
JVM学习三
1、什么是双亲委派模型?为什么需要双亲委派模型?当一个类加载器收到一个类加载的请求,他首先不会尝试自己去加载,而是将这个请求委派给父类加载器去加载,只有父类加载器在自己的搜索范围类查找不到给类时,子加载器才会尝试自己去加载该类;为了防止内存中出现多个相同的字节码;因为如果没有双亲委派的话,用户就可以自己定义一个java.lang.String类,那么就无法保证类的唯一性。那怎么打破双亲委派模型?自定义类加载器,继承ClassLoader类,重写loadClass方法和findClass方法。2、列举一原创 2022-06-17 20:26:25 · 335 阅读 · 0 评论 -
JVM学习二
1、Minor GC 和 Full GC 有什么不同呢?Minor GC:只收集新生代的GC。Full GC: 收集整个堆,包括 新生代,老年代,永久代(在 JDK 1.8及以后,永久代被移除,换为metaspace 元空间)等所有部分的模式。Minor GC触发条件:当Eden区满时,触发Minor GC。Full GC触发条件:1、通过Minor GC后进入老年代的平均大小大于老年代的可用内存。如果发现统计数据说之前Minor GC的平均晋升大小比目前old gen剩余的空间大,则不会触发Min原创 2022-06-17 17:11:08 · 203 阅读 · 0 评论 -
JVM学习一
1、 什么情况下会发生栈内存溢出?1、栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表、操作数栈、动态链接、方法出口等信息,局部变量表又包括基本数据类型和对象的引用; 2、当线程请求的栈深度超过了虚拟机允许的最大深度时,会抛出StackOverFlowError异常,方法递归调用肯可能会出现该问题; 3、调整参数-xss去调整jvm栈的大小2、谈谈对 OOM 的认识?如何排查 OOM 的问题?除了程序计数器,其他内存区域都有 OOM 的风险。1、栈一般经常原创 2022-06-16 20:43:06 · 113 阅读 · 0 评论