Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何减少垃圾产生?_Java_Garbage Collection_Netty - Fatal编程技术网

Java 如何减少垃圾产生?

Java 如何减少垃圾产生?,java,garbage-collection,netty,Java,Garbage Collection,Netty,我有一个使用netty framework编写的网络应用程序,它可以处理大约40k msg/sec的数据,我想减少垃圾收集器调用的数量。在分析时,我发现有大量的byte[]实例,我怀疑它来自这部分代码: 公共类MessageHandler扩展了SimpleChannelHandler{ 收到公共无效消息(ChannelHandlerContext ctx,最终消息事件e){ ChannelBuffer消息=(ChannelBuffer)e.getMessage(); } } 有没有可能迫使ne

我有一个使用netty framework编写的网络应用程序,它可以处理大约40k msg/sec的数据,我想减少垃圾收集器调用的数量。在分析时,我发现有大量的
byte[]
实例,我怀疑它来自这部分代码:

公共类MessageHandler扩展了SimpleChannelHandler{
收到公共无效消息(ChannelHandlerContext ctx,最终消息事件e){
ChannelBuffer消息=(ChannelBuffer)e.getMessage();
}
}

有没有可能迫使netty以某种方式重新使用/pool
ChannelBuffers
,以防止它每次都构建缓冲区?

我们计划实现缓冲区池,但尚未实现


请参见

所以每次新消息到达时,netty都会创建新的ChannelBuffer?有没有一种简单的方法可以避免这种情况?我只有一个tcp客户端,不想通过分配一堆通道缓冲区来产生另一个垃圾。也许我可以随便换一点,但我对这个图书馆还是个新手。我想没有简单的办法。但我正在努力。不确定什么时候能完成,因为这取决于我的空闲时间。在一般情况下,对象池在Java中不能很好地工作。单是锁开销就让正确操作变得很有挑战性,池中的对象变得类似于僵尸——它们破坏了年轻/老对象之间的关系。JVM人员的一般建议是:请不要这样做。这就是说,这个特定的对象除了一组基本体之外似乎没有任何子对象,所以它可能会工作。但我不知道这会有多大帮助。@shg我认为这是我们将要完成的下一件事之一,一旦它出局,它将成为netty 4.0.0.Final的一部分