码迷,mamicode.com
首页 > 其他好文 > 详细

JVM

时间:2020-04-01 00:59:12      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:垃圾回收器   解决   静态内部类   csdn   处理   用户线程   元素   code   外部类   

JVM

静态内部类会被编译成几个class?为什么内部类可以访问外部类的private的方法?

1 内部类对象的创建依赖于外部类对象;

2 内部类对象持有指向外部类对象的引用。

linkedhashmap实现LRU

内存泄漏例子

技术图片

 

 OOM的原因及排查方法

https://blog.csdn.net/ls5718/article/details/52411211

CPU占满原因及排查

垃圾回收器 CMS G1

CMS 初始标记  并发标记 重新标记

3.对CPU资源敏感,CMS默认启动的回收线程数是(cpu数量+3)/4。所以CPU数量少会导致用户程序执行速度降低较多。

初始标记(GC直接引用)并发标记(全引用图)重新标记(修正并发标记期间, 因用户程序继续运作而导致标记产生变动的那一部分对象的 )

1.浮动垃圾:由于CMS并发清理阶段用户线程还在运行着,伴随程序运行自然会有新垃圾产生,这部分垃圾得标记过程之后,所以CMS无法在当收集中处理掉他们,只好留待下一次GC清理掉,这一部分垃圾称为浮动垃圾。在jdk1.5默认设置下,CMS收集器当老年代使用了68%的空间就会被激活,可以通过-XX:CMSInitialOccupancyFraction的值来提高触发百分比,在jdk1.6中CMS启动阈值提升到了92%,要是CMS运行期间预留的内存无法满足程序的需要,就会出现”Concurrent Mode Failure“,然后降级临时启用Serial Old收集器进行老年代的垃圾收集,这样停顿时间就很长了,所以-XX:CMSInitialOccupancyFraction设置太高容易导致大量”Concurrent Mode Failure“。

2.有空间碎片:CMS是一款基于“标记-清除”算法实现的,所以会产生空间碎片。为了解决这个问题,CMS提供了-XX:UseCMSCompactAtFullCollection开发参数用于开启内存碎片的合并整理,由于内存整理是无法并行的,所以停顿时间会变长。还有-XX:CMSFullGCBeforeCompaction,这个参数用于设置多少次不压缩Full GC后,跟着来一次带压缩的(默认为0)。

G1(分Region)

技术图片

缺点

技术图片

 

手撕一个阻塞队列,生产者生产0~100的随机数,消费者消费后将其存储到一个list,需要保持list中元素保持递增。(信号量+线程安全)

 

 

 

 

JVM

标签:垃圾回收器   解决   静态内部类   csdn   处理   用户线程   元素   code   外部类   

原文地址:https://www.cnblogs.com/HHHzhihao/p/12609803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!