命令 | 值范围 | 说明 | 备注 |
io.netty.leakDetectionLevel |
|
内存泄漏检测机制的日志等级 |
|
io.netty.allocator.type |
|
ByteBuf的分配器,默认值为ByteBufAllocator.DEFAULT,4.0版本为UnpooledByteBufAllocator。 | |
io.netty.noPreferDirect |
|
这两个配置项配合使用,将第一个参数设置成 true | |
io.netty.noUnsafe |
|
||
io.netty.maxDirectMemory |
独立的控制内存参数,默认为-1 |
如果不设置第一个参数则会使用第二个参数来控制。如果MaxDirectMemorySize仍没有设置,则默认使用java堆大小 |
堆外内存好处就是不受jvm的机制管制,能够缓解gc压力。但是坏处也显而易见:容易泄漏,且不好排查。如果不设置netty最大使用内存,默认能使用jvm堆大小的内存。如果我们java应用放在容器里面,则很容易因为忽略堆外内存的使用导致容器被OOM killer杀死。可以通过两个参数来控制内存使用: |
-XX:MaxDirectMemorySize |
设置 jvm的堆外内存参数 |
||
io.netty.allocator.type |
|
是否使用cache模式 | netty为了高性能,默认使用了cache来管理回收的内存,这样下次再分配时直接从cache中分配,而不用频繁地调用Unsafe接口 |
参考资料:
(1) Netty源码解析系列:参数篇 - 知乎 (zhihu.com)
(2) Netty 长连接服务及Netty之JVM调优_weixin_34025151的博客-CSDN博客
标签:netty,jvm,泄漏,笔记,参数,内存,io From: https://www.cnblogs.com/sandyflower/p/16745591.html