频繁Full GC问题排查定位先上结论:长时间运行MetricsClientHttpRequestInterceptor.servoMonitorCache.timerCache积累过多且不回收,导致频繁fullGc 起因:运维的同事说,你这个服务运行时间长了,内存不回收啊,内存一直往上加,我们半月 ...
服务器cpu100%怎么定位?
如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载? 找到最耗CPU的进程 执行top -c ,显示进程运行信息列表 键入P (大写p),进程按照CPU使用率排序 如上图,最耗CPU的进程PID为29025 找到最耗CPU的线程 top -Hp 290 ...
java 单例模式中双重检查锁定 volatile 的作用
volatile 是保证了可见性还是有序性?有序性:是因为 instance = new Singleton(); 不是原子操作。编译器存在指令重排,从而存在线程1 创建实例后(初始化未完成),线程2 判断对象不为空,但实际对象扔为空,造成错误。 可见性:是因为线程1 创建实例后还只存在自己线程 ...
Effects of Type Erasure and Bridge Methods
原文链接 Effects of Type ErasureSometimes type erasure causes a situation that you may not have anticipated. The following example shows how this can occu ...
Happens-Before规则
Happens-Before的7个规则 程序次序规则:在一个线程内,按照程序代码顺序,书写在前面的操作先行发生于书写在后面的操作。准确地说,应该是控制流顺序而不是程序代码顺序,因为要考虑分支、循环等结构。 管程锁定规则:一个unlock操作先行发生于后面对同一个锁的lock操作。这里必须强调的是同一 ...
Java线程的生命周期
通用的线程生命周期 通用的线程生命周期基本上可以用下图这个“五态模型”来描述。这五态分别是:初始状态、可运行状态、运行状态、休眠状态、终止状态 1.初始状态 线程已经被创建,但是还不允许分配 CPU 执行。这个状态属于编程语言特有的,不过这里所谓的被创建,仅仅是在编程语言层面被创建,而在 ...
关于长连接的负载均衡解决方案
最近公司培训,讲到了有关于长连接的负载均衡解决方案,确有体会,故此记录一下。在之前做负载均衡一般针对的是短连接,短连接的场景在实际应用中非常普遍。浏览器中大部分的请求都是短连接,例如用户登录,注册。商城的订单,付款等功能都属于短连接。短连接的特点就是无状态,连接时间短,长则三四秒,短则几毫秒。短连接 ...