春季编解码器的限制



我在使用Web客户端时遇到以下异常。

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

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

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

Spring维护了一定数量的缓冲区,即MaxInMemorySize(大约250KB(。这可以通过在application.properties/application.yml.中添加一个属性来修改

示例:

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

通过添加此项,最大内存大小将增加到10MB。

说到您的问题,由于这是一个预定义的值,spring在内部创建一些缓冲区,而不是为每个请求单独创建。

我在spring-boot应用程序中更新下面的属性时遇到了类似的错误。yml帮助解决了这个错误。

spring:
codec:
max-in-memory-size: 700KB

您可以使用上述属性更改默认的DataBufferLimit。

你可以在这里找到更多答案

相关内容

最新更新