线上系统突然变得卡顿或无法访问,排除网络异常的情况下,检查服务器资源占用情况,如果CPU、内存、磁盘IO等资源占用过高,就会导致无法继续处理HTTP请求。 如果是CPU占用飙高,有可能是程序中存在死循环、死锁导致的,也有可能是内存紧张从而频繁GC导致的,要具体问题具体分析。 排查过程 这里记录一次线 ...
分类:
其他好文 时间:
2020-02-06 11:07:57
阅读次数:
75
三大指标 高可用,高性能,高并发 高性能 RPC 通信 Kyro 高速序列化 HikariCP 连接池 SQL 优化 Redis 缓存 JVM 优化 GC 优化 高并发 垂直扩展+水平扩展 高可用 一直可以用,99.999999% k8s 解决单点故障 实现崩溃恢复,自动重启 自动扩/缩容 金丝雀发 ...
分类:
其他好文 时间:
2020-02-05 20:31:48
阅读次数:
117
JVM第二弹GC分代收集算法VS分区收集算法分代收集算法当前主流的VM垃圾收集都采用“分代收集“算法,这种算法会根据对象存活周期的不同将内存划分为几块,如JVM中的新生代、老年代、永久代,这样就可以根据个年代特点分别采用最适当的GC算法。新生代·复制算法每次垃圾收集都能发现大批对象已死,只有少量存活。因此选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。老年代·标记整理算法因为对象存活
分类:
其他好文 时间:
2020-02-05 18:12:19
阅读次数:
71
Java 内存分配策略 Java 内存分配策略 优先在 Eden 区分配 大对象直接进入老年代 长期存活的对象将进入老年代 空间分配担保 新生代和老年代的 GC 操作 新生代 GC 操作:Minor GC 发生的非常频繁,速度较块。 老年代 GC 操作:Full GC / Major GC 经常伴随 ...
分类:
编程语言 时间:
2020-02-03 00:04:41
阅读次数:
107
#include <stdio.h> int main() { int g1,s1,k1,g2,s2,k2,g,s,k,g3,g4,s3,s4,k3,k4; scanf("%d.%d.%d %d.%d.%d",&g1,&s1,&k1,&g2,&s2,&k2); g3=g1;g4=g2;s3=s1;s ...
分类:
其他好文 时间:
2020-02-02 14:17:40
阅读次数:
76
前言 Java 相比 C/C++ 最显著的特点便是引入了自动垃圾回收 (下文统一用 GC 指代自动垃圾回收),它解决了 C/C++ 最令人头疼的内存管理问题,让程序员专注于程序本身,不用关心内存回收这些恼人的问题,这也是 Java 能大行其道的重要原因之一,GC 真正让程序员的生产力得到了释放,但是 ...
分类:
编程语言 时间:
2020-02-02 12:13:14
阅读次数:
83
一.G1 GC术语Overview 1.1 并发 并发的意思是Java应用执行和垃圾收集活动可以同时进行 1.2 并行 并行的意思是垃圾收集运算是多线程执行的,比如CMS垃圾收集器的年轻代就是并行的,并行与串行的区别如下图,左边为串行,右边为串行: 1.3 STW STW(stop the worl ...
分类:
其他好文 时间:
2020-02-01 19:37:15
阅读次数:
70
"netty内存管理思想" "PooledByteBufAllocate" "PoolChunk" "Chunk初始化" "PoolChunk分配内存" netty内存管理思想 java作为一门拥有GC机制的语言,长久以来它的使用者都不必手动管理内存,这比起c/c++是一个巨大的进步。但现在nett ...
分类:
其他好文 时间:
2020-01-31 21:15:28
阅读次数:
97
什么是安全点? 在 JVM 中如何判断对象可以被回收 一文中,我们知道 HotSpot 虚拟机采取的是可达性分析算法。即通过 GC Roots 枚举判定待回收的对象。 那么,首先要找到哪些是 GC Roots。 有两种查找 GC Roots 的方法: 一种是遍历方法区和栈区查找(保守式 GC)。 一 ...
分类:
其他好文 时间:
2020-01-31 18:31:49
阅读次数:
252
使用luajit ffi会遇到cdata引用cdata的情况。官方说明是必须手动保存所有cdata的引用,否则会被gc掉。 ffi.cdef[[ struct A { int id; }; struct B { int id; struct A* a; }; ]] function createB( ...
分类:
其他好文 时间:
2020-01-31 13:59:56
阅读次数:
159