【发布时间】:2014-04-07 17:12:03
【问题描述】:
我在带有 Windows 8 主机的 Ubuntu 12 VirtualBox Guest 中使用 Hadoop 和 Eclipse 来开发 MapReduce 程序。我在单元测试期间使用了大量数据,显然有一些内存泄漏,因为 hadoop 程序在几次试验后抛出了磁盘错误。我关闭了 Eclipse,但内存仍然没有显示在我的 Windows 任务管理器中。重新启动 Ubuntu 机器后,我可以再次运行程序,直到出现磁盘错误。有没有人遇到过类似的问题或知道如何解决这个问题?
【问题讨论】:
-
在假设 Eclipse、Hadoop、JRE 或 Ubuntu 中存在错误之前,最好检查您的代码是否存在泄漏。 90% 的情况是你的代码有问题。
-
@m0skit0,我关闭了我的程序,退出了 Eclipse 并关闭了一切。我的代码仍然会留下不好的东西吗?由于这是一个java程序,所以在我的程序被杀死后,所有内存都应该被gc清除?
-
为什么是-1?也可能是缓存问题?
-
是的,你是对的,它应该被释放,但如果你生成一些服务器或单独的进程,它可能仍在单独的 JVM 中运行。您可以使用
ps -A | grep java检查所有正在运行的 Java 进程。我没有投反对票,但对我来说这个问题实际上是题外话。 -
@m0skit0,谢谢。也许我应该以不同的方式提出这个问题。我并不是说我提到的所有软件都存在问题,只是说当我使用所有这些软件时发生了一些不好的事情。我尝试释放缓存,但任务管理器中的内存仍然相同。可能是我没有以正确的方式释放缓存。感谢您的投入。我将 grep for java 并再次检查。
标签: java eclipse ubuntu hadoop memory-leaks