【问题标题】:OutOfMemoryError: Java heap space MultipartRequestOutOfMemoryError:Java 堆空间 MultipartRequest
【发布时间】:2015-08-25 18:38:48
【问题描述】:

当我尝试上传文件时,我遇到了 MultipartRequest 问题。 错误是:OutOfMemoryError:Java 堆空间。 我认为错误在while cicle中,但我不知道出了什么问题。 谢谢。

这是我的代码:

InputStream is = part.getInputStream();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[16384];

while ((nRead = is.read(data, 0, data.length)) != -1) {
    buffer.write(data, 0, nRead);
}

buffer.flush();

byte[] out = buffer.toByteArray();

2015 年 6 月 10 日 15:39:45.146 严重 [http-nio-8080-exec-307] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks Web 应用程序 [tw] 创建了一个具有类型键的 ThreadLocal [com.sun.xml.ws.api.client.ServiceInterceptorFactory$1](价值 [com.sun.xml.ws.api.client.ServiceInterceptorFactory$1@5901535e])和 [java.util.HashSet] 类型的值(值 [[]])但未能删除 当 Web 应用程序停止时。线程将是 随着时间的推移更新以尝试避免可能的内存泄漏。 2015 年 6 月 10 日 15:39:45.146 严重 [http-nio-8080-exec-307] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks Web 应用程序 [tw] 创建了一个具有类型键的 ThreadLocal [com.sun.xml.bind.v2.runtime.Coordinator$1](价值 [com.sun.xml.bind.v2.runtime.Coordinator$1@1e3025db]) 和值为 键入 [com.sun.xml.bind.v2.runtime.Coordinator[]](值 [[Lcom.sun.xml.bind.v2.runtime.Coordinator;@d9e64e7]) 但未能 当 Web 应用程序停止时将其删除。线程将 随着时间的推移进行更新,以尽量避免可能的内存泄漏。 2015 年 6 月 10 日 15:39:57.464 信息 [http-nio-8080-exec-307] org.apache.catalina.core.StandardContext.reload 重新加载上下文 名称 [/tw] 已完成 NOME PART: 1031.zip 10-Jun-2015 15:40:45.772 严重 [http-nio-8080-exec-308] null.null 被抛出 java.lang.OutOfMemoryError: Java 堆空间

【问题讨论】:

  • 请发布堆栈跟踪。
  • 发表在我的问题中
  • 看起来您正在创建线程本地变量,而不是在使用后删除它们。我认为您发布的代码与此处无关。请在您使用线程局部变量的地方发布代码。

标签: java out-of-memory multipartform-data heap-memory


【解决方案1】:

您需要增加堆空间。如果您使用的是 eclipse,您可以查看this link,它将向您展示如何增加堆大小(堆内存是存储所有对象的“地方”)

【讨论】:

    猜你喜欢
    • 2013-01-24
    • 2019-03-06
    • 2021-02-13
    • 2012-10-09
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    相关资源
    最近更新 更多