0

我有一个在 Netty 上运行的 Java REST 服务,用于上传(流式传输)大量 5MB 到 500MB 的文件。当我在某个时候增加并发上传的数量时,应用程序会出现内存不足,这是意料之中的,但我正在寻找关于在这种情况下应该使用哪些 Java GC 和 VM 设置来提高性能和减少内存占用。如果有人可以分享类似的经历,我将不胜感激。

更新:为了给问题添加更多上下文,REST 服务将文件作为流获取并将相同的流传递给 Amazon S3。

4

1 回答 1

0

发送大量数据时,您可能应该使用流量控制。您可以在发送数据之前检查通道是否可写(Channel.isWritable())并等待它准备好。您可以通过 ChannelInboundHandler.channelWritabilityChanged(ChannelHandlerContext ctx) 使用通知来跟踪它。如果没有流量控制,您所有的大文件都会消耗内存等待在 Netty 的输出缓冲区中发送。

于 2013-10-12T05:33:51.753 回答