关于java freeswitch esl inbound client长时间使用内存泄漏处理

关于java freeswitch esl inbound client长时间使用内存泄漏处理_第1张图片

直入主题,在使用源生的esl inbound client 时长时间运行后可能会出现内存溢出的错误,导致程序崩溃,最开始以为是自己的esl client 频繁检测重连方法有问题,导致内存得不到释放,后面再深入跟进inbound.client方法中发现其实并不是我得锅,实际问题是esl client代码中没有好好用DirectByteBuffer造成的问题。想深入理解的朋友可以看一下,DirectByteBuffer 与ByteBuffer 了解一下,因为我也没有全部搞懂,所以这里不具体讲这一块区别。

    如果深入改这一块可能涉及的太多,本人在这推荐一种简单的解决方法,找到inbound.client中的的这行,将NioClientSocketChannelFactory 放到方法外声明,改为静态类,方法里直接调用就可以解决长时间使用会抛出内存溢出的问题,因为我们使用inbound内联,无需每次使用都去new。

关于java freeswitch esl inbound client长时间使用内存泄漏处理_第2张图片

你可能感兴趣的:(freeswitch)