![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
netty
lixia0417mul2
避免成为那些从来没有接触过真正技术的所谓技术生涯
展开
-
java 堆外内存常见误解
java堆外内存常见误解原创 2023-09-20 01:23:04 · 144 阅读 · 0 评论 -
netty解析http协议异常Connection closed before received headers 分析
netty解析http协议 http协议解析错误 netty解析http协议错误 http协议不完整导致的解析异常原创 2023-06-15 22:26:59 · 524 阅读 · 0 评论 -
java堆外内存为何比java堆更适合用来进行网络IO操作
java执行socket.write对java堆内的数组数据进行网络IO操作时,其实分两步进行:1.把java堆的数据拷贝到C堆内存中(对Java来说就是堆外内存,只是这个内存不归java管理)2.把C内存中的数据发送到内核内存中,进行网络IO操作疑问: 为何jvm不直接把数据从java堆发送到内核内存中进行网络IO操作,而要先把数据拷贝到C堆内存中答案是:进行网络IO操作时其实底层调用的是c的函数write,该函数对应的字节数组的地址不能够变化,如果使用的java堆内的地址的话,由于gc的影响,有原创 2020-06-30 01:11:59 · 512 阅读 · 0 评论 -
Netty短时间内大量写消息导致的内存问题
1.简化场景: 使用netty服务器作为游戏服务器,100个业务写线程,cpu核心个netty worker Io读写线程,在某个时刻,发现某台机器内存被耗尽,使用到了swap 交换空间问题: 为何那个时刻直接内存被耗尽,导致使用到了swap内存空间答案:线下复现发现,当最极端100个业务线程全部用来向channel写消息的时候,这些消息(通过直接内存申请的消息)进入到了netty worker IO线程的队列里面,等待IO线程进行网络IO,由于这个业务线程的数量远大于worker IO线程的数量,造成原创 2020-06-26 21:43:25 · 863 阅读 · 0 评论