gpt4 book ai didi

java - GCS - 上传较大大小的文件时出现堆错误

转载 作者:行者123 更新时间:2023-12-01 09:42:35 25 4
gpt4 key购买 nike

我想将 400MB 的文件上传到 Google Cloud Storage。以下是我用来获取上传网址并在 angularjs 中发布的代码片段

Java Servlet:

UploadOptions opts = UploadOptions.Builder
.withGoogleStorageBucketName(GCS_BUCKET_NAME);
String url = blobstore.createUploadUrl("/upload", opts);

AngularJS:

$scope.formData.append('file', $scope.filename);

$http.post(uploadUrl, $scope.formData, {
withCredentials: true,
headers: {
'Content-Type': undefined
},
transformRequest: angular.identity
})

代码工作正常,直到文件大小约为 100-150MB,当文件大小更大时,我在浏览器控制台中收到以下错误。

无法加载资源:服务器响应状态为 500(Java 堆空间)

我需要做什么才能避免此错误?

最佳答案

正如您在回答我上面的问题时所说,这仅发生在开发中,而不是生产中。我的猜测是,谷歌的 blobstore 代码将整个请求读取到其开发服务器的内存中,但这很难说,因为我们无权访问该代码。如果您需要在开发中测试更大的上传,您可以尝试配置您的开发服务器以使用更多内存启动。看起来我使用 -Xmx512M (在 eclipse 中启动配置的“VM 参数”部分),您甚至可以尝试更多。或者,如果它在开发中并不重要,您可以只测试较小的上传并相信大型上传可以在生产中运行。 :)

仅供引用,如果您决定使用更多内存启动开发服务器:就我而言,一起使用 Eclipse 和 Maven,我必须创建 Maven 自动生成的启动配置的副本并修改该副本,否则 Maven 会覆盖我的配置变化。这也意味着我必须不时手动更新我的副本,例如更新 appengine SDK 时(以反射(reflect)新版本号)。

关于java - GCS - 上传较大大小的文件时出现堆错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38344261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com