这似乎是个简单的问题,但我找不到答案。
在spring boot中,我有一个返回json的控制器方法:
@GetMapping
public ResponseEntity<Stream<MyObject>> get() {
return ResponseEntity
.ok()
.contentType(MEDIA_JSON)
.body(service.stream());
}
这是正确地流到用户(成片)还是整个流在返回到用户之前加载到内存中?
这似乎是个简单的问题,但我找不到答案。
在spring boot中,我有一个返回json的控制器方法:
@GetMapping
public ResponseEntity<Stream<MyObject>> get() {
return ResponseEntity
.ok()
.contentType(MEDIA_JSON)
.body(service.stream());
}
这是正确地流到用户(成片)还是整个流在返回到用户之前加载到内存中?
1条答案
按热度按时间mm5n2pyu1#
我没有在文档中找到任何东西,但是可以尝试查看它的行为。
让我们创建两个端点和一个无限的对象流:
打电话http://localhost:8080/流将立即响应,生成一个无限的
[{"name":"foo"},{"name":"foo"}...
如果您分析应用程序,您可以看到它可以持续几分钟而不增加内存使用量:相反,打电话给http://localhost:8080/nostream端点将快速导致
java.lang.OutOfMemoryError
: