2

我们将 Java 用于我们的项目 www.aerospaceresearch.net/constellation,并直接从已卸载的 java bin 文件夹中使用 Java。

在操作系统甚至 32 位和 64 位版本之间,我们对这个 java 的 ram 使用有一些问题。是否可以设置 ram 使用的上限,以便 Java 对 ram 进行动态重新排列,例如它总是低于 150mb?

这将真正帮助我们解决一些小问题,并将我们的应用程序带到内存功能有限的系统中。

提前致谢, 安德烈亚斯

4

2 回答 2

7

从您的问题很难判断,但您可能正在寻找Sun 的Oracle工具-Xmx中的选项,该选项设置 Java 内存堆的最大大小。java

有关该版本java工具提供的各种非标准功能的详细信息(包括几个与堆相关的功能),请java -X在命令提示符下键入。对于我安装的版本,这给了我:

爪哇 -X
    -Xmixed 混合模式执行(默认)
    -Xint 仅解释模式执行
    -Xbootclasspath:<目录和 zip/jar 文件由 :> 分隔
                      设置引导类和资源的搜索路径
    -Xbootclasspath/a:<目录和 zip/jar 文件由 :> 分隔
                      附加到引导类路径的末尾
    -Xbootclasspath/p:<目录和 zip/jar 文件由 :> 分隔
                      在引导类路径前面添加
    -Xnoclassgc 禁用类垃圾收集
    -Xincgc 启用增量垃圾回收
    -Xloggc:<file> 将 GC 状态记录到带有时间戳的文件中
    -Xbatch 禁用后台编译
    -Xms<size> 设置初始 Java 堆大小
    -Xmx<size> 设置最大 Java 堆大小
    -Xss<size> 设置java线程栈大小
    -Xprof 输出 cpu 分析数据
    -Xfuture 启用最严格的检查,预测未来的默认值
    -Xrs 减少 Java/VM 对 OS 信号的使用(参见文档)
    -Xcheck:jni 对 JNI 函数执行额外的检查
    -Xshare:off 不尝试使用共享类数据
    -Xshare:如果可能,自动使用共享类数据(默认)
    -Xshare:on 要求使用共享类数据,否则失败。

-X 选项是非标准的,如有更改,恕不另行通知。

如果您使用不同的 Java 实现,这些选项可能会有所不同;并注意上述末尾的警告。

于 2011-05-08T12:53:54.097 回答
3

您可以尝试使用类似...

java -Xmx128m BigApp

但是,如果您的应用程序实际上超过了 128 MB 堆限制,您可能会遇到内存不足错误。

[更新] 在 64 位方面,有一个特殊的参数使 64 位引用占用更少的空间,但我现在找不到它。它是新 JRE 之一(1.6?)的标准。

于 2011-05-08T12:54:23.227 回答