摘要: 四、实战调优 1、你在项目中都使用了哪些参数打印GC? 具体的参数名称记不清楚了,但是我一般在项目中输出详细的 GC 日志,并加上可读性强的 GC 日志的时间戳。特别情况下我还会追加一些反映对象晋升情况和堆详细信息的日志,这些会单独打到gc.log文件中用来排查问题。另外,OOM 时自动 Dump 阅读全文
posted @ 2022-04-15 11:30 zydbky 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 三、GC垃圾回收 1、GC是什么?为什么要GC GC:垃圾收集,GC能帮助我们释放jvm内存,可以一定程度避免OOM问题,但是也无法完全避免。Java的GC是自动工作的,不像C++需要主动调用。 当new对象的时候,GC就开始监控这个对象的地址大小和使用情况了,通过可达性分析算法寻找不可达的对象然后 阅读全文
posted @ 2022-04-15 11:28 zydbky 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 二、Java内存区域 1、Java内存结构 程序计数器 当前线程所执行字节码的行号指示器。若当前方法是native的,那么程序计数器的值就是undefined。 线程私有,Java内存区域中唯一一块不会发生OOM或StackOverflow的区域。 虚拟机栈 就是常说的Java栈,存放栈帧,栈帧里存 阅读全文
posted @ 2022-04-15 11:23 zydbky 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 缓存雪崩 对于系统 A,假设每天高峰期每秒 5000 个请求,本来缓存在高峰期可以扛住每秒 4000 个请求,但是缓存机器意外发生了全盘宕机。缓存挂了,此时 1 秒 5000 个请求全部落数据库,数据库必然扛不住,它会报一下警,然后就挂了。此时,如果没有采用什么特别的方案来处理这个故障,DBA 很着 阅读全文
posted @ 2022-04-15 11:14 zydbky 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。 在Java中有一个Executors工具类,可以为我们创建一个线程池,其本 阅读全文
posted @ 2022-04-15 10:27 zydbky 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。 介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的 阅读全文
posted @ 2022-04-15 10:17 zydbky 阅读(157) 评论(0) 推荐(0) 编辑