当WebSocket客户端连接到WebSocket服务器时,YourKit显示分配16 MB byte []

时间:2013-03-14 22:49:25

标签: websocket netty

我在java 7 se嵌入式应用程序中使用Netty beta 2 websocket功能,我试图尽可能减小占用空间。我正在使用-Xms8m和-Xmx32m。

当我在YourKit中分析应用程序时,只要客户端与服务器建立websocket通道,基本字节[]类型大小就会从2 MB跳到16 MB。

  • 注意:这是在握手之后,但在发送任何websocket消息之前

有没有其他人看过这个,你知道这个分配是做什么的吗?

由于

1 个答案:

答案 0 :(得分:2)

我认为这是因为默认情况下我们在Netty 4中使用的池化ByteBufAllocator。它将分配大块字节将其放入池中,并在请求较小的大小时仅使用它的“片段”。这有助于堆上的内存布局等。

如果您希望使用低内存(并且性能松散),请使用未加密的ByteBufAllocator。

对于客户:

bootstrap.option(ChannelOption.ALLOCATOR, UnpooledByteBufAllocator.DEFAULT);

对于服务器:

bootstrap.childOption(ChannelOption.ALLOCATOR, UnpooledByteBufAllocator.DEFAULT);