如何通过System.setProperty设置内存没有影响?

时间:2012-11-28 12:05:26

标签: java jvm

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)

deployment.properties AND 512MB中未指定任何内容时,应打印deployment.javaws.jre.0.args=-Xmx512m.But in both case i am getting the result 259522560的值

1 个答案:

答案 0 :(得分:4)

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

你想做的事情根本行不通。

任何 Java代码能够运行时,太晚来更改堆大小设置。无论是使用java命令运行代码,使用web start,使用applet运行程序,在浏览器中使用嵌入式JVM ...... 还是任何其他方式,都是一样的。< / p>