0
import java.io.*;
import java.util.*;
public class ReadPropertiesFile {       
    public static void main(String[] args)throws Throwable{                
        Properties prop = new Properties();                
        prop.load(new FileInputStream(
            "C:\\Windows\\Sun\\Java\\Deployment\\deployment.properties"));
        String Xmx = prop.getProperty("deployment.javaws.jre.0.args",
                                      "This is Default"); 
        if(Xmx!="This is Default")
        {
            System.setProperty("javaplugin.vm.options","\"Xmx\"");
        }
        long maxMemory = Runtime.getRuntime().maxMemory();
        System.out.println("JVM maxMemory also equals to maximum heap size of JVM: "
                                         + maxMemory);
    }
}

它应该打印maxMemory around 96MB(for 2 gb RAM)when 没有指定的值deployment.properties AND 512MBwhen 明确提到deployment.javaws.jre.0.args=-Xmx512m.But in both case i am getting the result 259522560

4

1 回答 1

4

Hotspot Java 实现的 JVM 内存参数只能在 JVM 启动/启动时通过命令行选项设置。在 JVM 启动之前或之后在系统属性中设置它们将无效。

您尝试做的事情根本行不通。

任何Java 代码能够运行时,更改堆大小设置为时已晚。无论您是使用java命令、使用 web start、使用 applet 运行器、使用浏览器中的嵌入式 JVM ...或任何其他方式运行代码,都是一样的。

于 2012-11-28T12:09:47.230 回答