首页 > 解决方案 > 春季编解码器的限制

问题描述

使用 Web 客户端时出现以下异常。

org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144

这表明必须通过MaxInMemorySize属性增加编解码器限制。

我想了解 MaxInMemorySize 是否设置为 X,这是否意味着对于每个请求,我们的应用程序都会预留 X 量的内存用于预先缓冲,或者内存是根据每个请求的响应大小动态分配的。

标签: javaspringwebclienthttpresponsecodec

解决方案


Spring 维护一些缓冲区,即 MaxInMemorySize(大约 250KB)。这可以通过向 application.properties / application.yml 添加属性来修改。

例子:

spring.codec.max-in-memory-size: 10MB

通过添加这个,内存大小的最大值将增加到 10MB。

来到你的问题,因为这是一个预定义的值,所以 spring 在内部创建了一些缓冲区,而不是为每个请求单独创建。


推荐阅读