问题标签 [java-memory-leaks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
77 浏览

java - 为什么 JVM 堆内存消耗分配超出最大内存?

JVM 堆内存消耗正在分配更多的最大值

我在这个领域很新,有人问我,我研究了 GC 和 Permgen 内存也发生在堆内存中。

关于这个话题发生了很多争论,但我无法得出结论为什么会这样。

需要深入而清晰的答案为什么会发生,JVM为Java进程分配的内存超过了最大内存。

0 投票
1 回答
516 浏览

java - Java Tomcat 应用程序堆大小比已用堆大很多

我正在开发一个在 Tomcat 的 1GB 内存服务器上运行的 Java Webapp。

最近我们注意到该应用程序占用了该服务器上的大部分内存 - 大约 83%。

我已经在我的个人机器上使用 VisualVM 对应用程序进行了概要分析,该机器具有更多的 RAM。

VisualVM 显示大约 400MB 已用堆空间,以及高达 1.4GB 的已分配堆空间。

设置 -Xmx512m 允许我降低分配的堆空间,而不会对站点性能产生任何重大影响。

在此处输入图像描述

几个问题:

  1. 这或多或少正常吗?为什么会这样?
  2. 有什么办法可以减少内存消耗?如果应用程序确实最终需要更多内存,则使用 -Xmx 限制占用的内存量可能会成为问题。
  3. 如果操作系统需要另一个说 100mb 用于另一个进程,java 会释放这个内存供操作系统使用,因为它没有使用堆并且只分配堆,或者操作系统会运行到内存问题吗?
0 投票
0 回答
374 浏览

macos - 在 Tomcat 上部署 Web 服务调用后,Tomcat 崩溃

在 tomcat 7.0.99 上部署了一个 web 服务

Tomcat 在 MacOS 上运行,我们正在对部署在 Tomcat 上的服务进行多次 Web 服务调用。完成第一次服务调用后,tomcat 崩溃(甚至其他服务也在处理中)。

当我在路径 /logs/ 中的 catalina.out 中进行验证时,发现日志如下

日志片段:

有人可以让我知道如何解决这个问题。

0 投票
1 回答
1904 浏览

java - java.lang.OutOfMemoryError:Java 堆空间(JUnit 测试)

我有一个类,我使用输入流然后将其转换为字符串。我也有一个 Junit 测试,在那里我得到了异常“java.lang.OutOfMemoryError: Java heap space”,我知道问题是我在测试中有内存泄漏,但我不明白如何解决它.也许有人知道怎么做?

我的课:

我的 JUnit 测试:

堆栈跟踪:

0 投票
1 回答
2060 浏览

memory-leaks - 为什么 Java11 将 java.util.zip.ZipFile$Source 保留在堆上?

有人可以帮助我了解我看到的是故意的、正确的行为还是 Java11 中的某种泄漏?让我们看一个简单的 hello world 应用程序:

唯一有趣的部分是 jar 依赖项。它可以是任何 jar,但为了使问题更加突出,让我们使用一个大的旧 gwt-user jar,它重 30MB:

运行应用程序,打开 jvisualvm,进行转储并查找保留的一组java.util.zip.ZipFile$Source

jvisualvm堆转储

来自类路径的那个 jar(实际上从未使用过)占用了 1.5MB 的堆。它不会在 GC 期间消失,当你内存不足时它也不会消失,我什至在 OutOfMemory heapdumps 中看到了这些条目。

该条目显然由 map 保存java.util.zip.ZipFile$Source.files。从源头上我可以看出,理论上这应该由来自 InnocuousThreadGroup 的 Common-Cleaner 线程进行清理,但我没有看到它发生。

我在将小型轻量级 Java 应用程序从 JDK8 迁移到 JDK11 时遇到了这个问题。与 JDK8 相比,在 Xmx 设置较低的情况下,这些 jar 占用了我堆的很大一部分。

那么它是一个错误还是一个功能?

0 投票
2 回答
3587 浏览

java - java 11 和 Ubuntu 18 的 Spring Boot 我们应该使用哪个 Java 垃圾收集器

我们有 10 个 Spring Boot 应用程序在 ubuntu18 上运行,具有 8GB RAM 和 Java 11。

我们使用 java 垃圾收集器-XX:+UseSerialGC运行应用程序,而不限制堆空间。

但是几天后服务器内存完全耗尽并且服务器被挂起。

如果我们使用垃圾收集器,我们是否需要限制堆内存?

我也尝试过使用其他垃圾收集器,但除了 +UseSerialGC 没有任何效果。

0 投票
0 回答
235 浏览

java - Java - JSON字符串操作期间的OutOfMemoryError

我正在尝试追踪下面显示的 Java 代码中的内存泄漏。

  • OutOfMemoryError: heap space此代码在仅处理少量文件更新后以 2 GB 的最大堆大小运行时抛出。
  • S3 上文件的压缩大小不超过几百 kB。
  • 输入字符串(“修正”变量)不大于 1 MB。
  • 堆转储显示byte[]大小为数百 MB - 在一种情况下,它占用了超过 50% 的堆空间。(然而,工具并没有指出这个数组的创建位置)。

它使用 AmazonS3 客户端实例在远程 S3 存储桶中读取和写入对象,还使用 ​​Jackson 的 ObjectMapper 处理字符串并将它们转换为 JSON 等。java.util.zip包中的 Deflater 和 Inflater 类用于压缩/解压缩。

这段代码是否存在明显的内存泄漏?是否有一个明显的错误可能导致堆上不断增长/巨大的字节数组?我一直在为这个问题挠头有一段时间了!谢谢。

0 投票
1 回答
563 浏览

java - Tesseract / Tess4j 内存泄漏

我们正在尝试使用 Tesseract 和 Tess4j 进行 OCR 文本提取。

在一段时间内连续使用 tesseract 时,我们注意到应用程序使用的 RAM 逐渐增加,在此期间,堆内存仍然空闲。我们使用 jconsole 监控堆外内存。堆外内存似乎也很正常。但是 RAM RSS 内存对于应用程序来说是不断增加的

我猜的问题是在 OCR 的内存分配期间 tesseract 的内存泄漏,我不确定。任何进一步接近的想法,请分享

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
36 浏览

java - 当本地内存小于转储堆的大小时,如何分析 Java 堆转储?

我有一个大约21G的非常大的hprof文件,它位于具有32G内存的远程服务器上,我想了解我的程序中发生了什么。但是,在我的本地桌面上,我只有8G内存,因此无法在本地启动此文件。

我试过了

但它在删除服务器时因内存不足错误而失败。

那么也许存在其他工具可以帮助我分析这个文件?

0 投票
1 回答
70 浏览

java - java 'Robot' 类内存泄漏

我正在制作共享屏幕程序。(客户端)

可悲的是,我发现发生了内存泄漏。

为了检查内存泄漏,我将其简化为:

跑 :

java -Xms50m -Xmx100m -jar "分享 screen.jar"

但!!运行程序10分钟后,

内存使用: 在此处输入图像描述

“机器人”课一定有问题!!!

我该如何解决?

java(jdk) 版本:openjdk 11.0