java - 如何在 Windows 上限制打包在 jar 中的 Java 应用程序的内存使用(-Xmx 似乎不起作用)

标签 java memory jar memory-management

我想限制 Java 应用程序的最大堆大小,但它似乎不起作用。我在 Windows 中通过 bat 从 jar 包运行应用程序。 bat 内容:

@Echo off
set CLASSPATH=.
java -Xmx32m -classpath %CLASSPATH% -jar MyApplication.jar

这应该限制 32 兆字节的最大堆大小。但是,当我使用应用程序执行消耗内存的操作时,Windows 任务管理器显示内存消耗至少达到大约 70 兆字节...我什至尝试使用 -Xmx2m,但这没有任何区别。

所以,我不完全确定问题出在哪里。内存使用中当然包含堆栈等,但程序使用的内存应该主要是堆空间......

Java版本好像是1.6.0_14。

对于那些对我所追求的东西感兴趣的人,我正在尝试了解我的应用程序在堆空间用完时如何处理某些函数。

编辑:嗯.. 当使用 JConsole 监控时,堆使用量实际上限制在 32M,这让我很惊讶。 .必须使用更多内存...

谢谢你的想法, 灯子

最佳答案

我不认为 TaskManager 会专门显示堆内存。它包括程序当时正在使用的所有内存。

要分析堆内存,您可以使用分析器(如 Yourkit)并查看是否遵守堆限制 -Xmx。这也将帮助您分析您感兴趣的程序部分。

关于java - 如何在 Windows 上限制打包在 jar 中的 Java 应用程序的内存使用(-Xmx 似乎不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443851/

相关文章:

Java 时间显示意外结果?

java - 围绕数据库连接创建抽象接口(interface)

c++ - "new int[5]"和 "malloc(5 * sizeof(int))"之间的 C++ 有什么区别?

c++ - Char* 相关的内存泄漏

java - jar导出后找不到类

Java 编辑 Jar 文件

Java:套接字未获取输入

liferay - 为什么 JRE 与 Liferay

VBA RtlMoveMemory 仅适用于 ByVal

Ant脚本生成的Java Jar不支持用户输入