Kafka java.lang.OutOfMemoryError: Direct buffer memory总结如下:
1.目前我们Kafka生产集群未配置XX:MaxDirectMemorySize参数,流量突增时容易产生java.lang.OutOfMemoryError: Direct buffer memory;
2.通过代码验证,XX:MaxDirectMemorySize参数在未配置情况下,默认与 -Xmx 参数值一样;
3.ByteBuffer.allocateDirect(size)分配内存的方式,在超过XX:MaxDirectMemorySize参数设置的阈值时,将抛出异常:java.lang.OutOfMemoryError: Direct buffer memory,这就是我们Kafka生产集群用的Java nio的分配方式;
4.如果是直接用Unsafe类的allocateMemory(size)方法,那分配内存将不受XX:MaxDirectMemorySize参数控制,也不会抛出java.lang.OutOfMemoryError: Direct buffer memory异常;结论:把XX:MaxDirectMemorySize参数适当调大应该可以解决Kafka集群java.lang.OutOfMemoryError: Direct buffer memory内存溢出问题。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态