限制Java RAM的使用?

时间:2011-05-08 12:49:35

标签: java limit option ram

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

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

这确实有助于我们解决一些小问题并将我们的应用程序带到具有有限ram功能的系统。

提前致谢,Andreas

2 个答案:

答案 0 :(得分:7)

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

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

java -X
    -Xmixed           mixed mode execution (default)
    -Xint             interpreted mode execution only
    -Xbootclasspath:<directories and zip/jar files separated by :>
                      set search path for bootstrap classes and resources
    -Xbootclasspath/a:<directories and zip/jar files separated by :>
                      append to end of bootstrap class path
    -Xbootclasspath/p:<directories and zip/jar files separated by :>
                      prepend in front of bootstrap class path
    -Xnoclassgc       disable class garbage collection
    -Xincgc           enable incremental garbage collection
    -Xloggc:<file>    log GC status to a file with time stamps
    -Xbatch           disable background compilation
    -Xms<size>        set initial Java heap size
    -Xmx<size>        set maximum Java heap size
    -Xss<size>        set java thread stack size
    -Xprof            output cpu profiling data
    -Xfuture          enable strictest checks, anticipating future default
    -Xrs              reduce use of OS signals by Java/VM (see documentation)
    -Xcheck:jni       perform additional checks for JNI functions
    -Xshare:off       do not attempt to use shared class data
    -Xshare:auto      use shared class data if possible (default)
    -Xshare:on        require using shared class data, otherwise fail.

The -X options are non-standard and subject to change without notice.

如果您使用的是不同的Java实现,那么这些选项可能会有所不同;并注意上面结尾处的警告。

答案 1 :(得分:3)

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

的内容
java -Xmx128m BigApp

但如果您的应用实际超过了128 MB的堆限制,则可能会出现内存不足错误。

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