- 博客(12)
- 收藏
- 关注
原创 JAVA之JVM垃圾收集算法
分代收集理论是jvm垃圾回收的一种思想,就是根据对象生命周期不同,分到不同的区域,然后对不同的区域使用更合适的回收机制,比如将堆分为新生代和老年代,一般老年代的对象存活时间久,不容易被清理,这个时候可以使用标记清楚或者标记整理算法,新生代对象可能每次清理一大半,这个时候就可以使用复制算法去清理新生代,复制算法快但内存开销大,标记清楚和标记整理算法开销小,速度相对复制慢。
2023-06-27 22:01:15
108
原创 分享一个免费巨好用的shell工具
finalshell 是国产的shell工具,免费,不过可以购买vip,vip功能就是机器进程管理,基本用不上,所以我们只用免费版功能包含,服务器连接,服务器管理,上传文件,文件可视化操作等,特别好用,强烈推荐,本人为了支持创作者,才开了vip,但功能用不上软件官网:http://www.hostbuf.com/http://www.hostbuf.com/...
2022-02-12 18:51:18
3514
原创 简单说说JAVA内存泄漏
大量对象占用JVM内存,并且垃圾回收无法回收,这就出现了内存泄漏打个比方一般电商架构可能会使用多级缓存架构,就是redis加上JVM级缓存,有的可能为了图方便对于JVM级缓存就简单使用一个hashmap,于是不断往里面放缓存数据,但是很少考虑这个map的容量问题,结果这个缓存map越来越大,一直占用着老年代的很多空间,时间长了就会导致fullgc非常频繁,这就是一种内存泄漏,对于一些老旧数据没有及时清理导致一直占用着宝贵的内存资源,时间长了除了导致full gc,还有可能导致OOM。这种情况完全可以考虑
2022-02-12 18:38:45
838
原创 系统频繁Full GC,导致系统卡顿
本人自己在云服务器上部署了个应用,都要忘了这么回事了,突然打开发现特别卡顿,数据量并不多,内存也是够用的,访问量也并不高,就时快时慢的问题以下是机器配置以及统计到的数据机器配置:2核4GJVM内存大小:2G系统运行时间:7天期间发生的FullGC次数和耗时:500多次,200多秒期间发生的YoungGC次数和耗时:1万多次,500多秒大致算下来每天会发生70多次FullGC,平均每小时3次,每次FullGC在400毫秒左右;每天会发生1000多次YoungGC,每分钟会发生1
2022-02-12 18:33:29
1713
原创 JVM调优工具
Jmap此命令可以用来查看内存信息,实例个数以及占用内存大小dump堆内存信息jvisualvm命令工具导入该dump出来的文件进行分析检测死锁可以远程连接,需要启动时加-Dcom.sun.management.jmxremote.port 为远程机器的JMX端口Jstack查死锁也可以用jvisualvm检测死锁Jinfo查看正在运行的Java应用程序的扩展参数Jstatjstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:j
2022-02-12 18:12:48
115
原创 垃圾收集底层算法实现
三色标记在并发标记的过程中,因为标记期间应用线程还在继续跑,对象间的引用可能发生变化,多标和漏标的情况就有可能发生。所以标记的时候分为三种颜色,黑色,白色,灰色黑色:表示对象已经被垃圾收集器访问过,并且它的所有引用也都扫描过,是安全存活的对象,如果有其他对象引用了黑色,那么无需重新扫描改对象灰色:表示对象已经被垃圾收集器访问过,但这个对象上至少存在一个引用还没有被扫描过白色:表示对象尚未被垃圾收集器访问过。所以,最开始的时候,所有的对象都是白色,如果扫描一遍以后,还是白色,那么表示这个对..
2022-02-12 17:31:52
298
原创 JVM垃圾收集器
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。JVM无非就是按照上篇文章的算法去做实现文章在这里CSDNhttps://mp.csdn.net/mp_blog/creation/editor/122898005下面讲述本人对JVM实现的集中垃圾收集器的个人理解,如有其他见解,欢迎讨论1:Serial收集器-XX:+UseSerialGC-XX:+UseSerialOldGC新生代采用复制算法,老年代采用标记-整理算法单线程收集器,gc时会暂停应用所有
2022-02-12 16:54:00
382
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人