Java内存使用/修复

Java内存使用/修复,java,memory-leaks,rmi,Java,Memory Leaks,Rmi,我们正在使用一个基于RMI的java应用程序。当我们运行该应用程序时,内存使用量不断增加,即使应用程序处于理想阶段。我们主要使用向量和哈希映射数据结构。如何最大限度地减少java内存使用量/修复内存泄漏 提前感谢如果您无法升级JDK版本,我建议您使用最新的1.6 JDK在另一台机器(真实或虚拟)上测试您的应用程序,然后使用内置的,它是诊断此类问题的非常好的工具。如果您无法升级JDK版本,我建议使用最新的1.6 JDK在另一台机器(真实的或虚拟的)上测试您的应用程序,然后使用内置的,这是诊断此类问

我们正在使用一个基于RMI的java应用程序。当我们运行该应用程序时,内存使用量不断增加,即使应用程序处于理想阶段。我们主要使用向量和哈希映射数据结构。如何最大限度地减少java内存使用量/修复内存泄漏


提前感谢

如果您无法升级JDK版本,我建议您使用最新的1.6 JDK在另一台机器(真实或虚拟)上测试您的应用程序,然后使用内置的,它是诊断此类问题的非常好的工具。

如果您无法升级JDK版本,我建议使用最新的1.6 JDK在另一台机器(真实的或虚拟的)上测试您的应用程序,然后使用内置的,这是诊断此类问题的一个非常好的工具。

我首先尝试了解Java的内存模型


这里有很多链接来解释。

我首先尝试理解Java的内存模型


下面是一个包含大量链接的示例。由于您使用的是1.4.2,并且无法使用jmap或visualvm,因此我建议您使用以下工具运行Java进程:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="foo.out"

内存不足后,用打开foo.out。这将有助于您识别应用程序中膨胀的对象。

由于您使用的是1.4.2,并且无法使用jmap或visualvm,因此我建议您使用以下工具运行Java进程:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="foo.out"

内存不足后,用打开foo.out。这将帮助您识别应用程序中膨胀的对象。

您需要对内存泄漏的根源进行一些分析。您使用的是什么JDK?请尝试使用JProfiler(或任何其他内存分析器)拍摄内存快照并进行比较。您将清楚地看到内存的去向。我使用的是j2sdk1.4.218您如何测量内存使用情况?您是在查看流程(通过ps或Windows任务管理器等工具),还是在查看Java堆的使用情况?使用Windows任务管理器,这是正确的方法吗?如何查看Java堆的使用情况?您需要对内存泄漏的来源进行一些根本原因分析。您使用的是什么JDK?请尝试使用JProfiler(或任何其他内存分析器)拍摄内存快照并进行比较。您将清楚地看到内存的去向。我使用的是j2sdk1.4.218您如何测量内存使用情况?您是在查看流程(通过ps或Windows任务管理器等工具),还是在查看Java堆的使用情况?使用Windows任务管理器是否正确?如何查看Java堆的使用情况?