2012-06-27 69 views
1

我們需要手動設置-Xmax和-Xmin環境變量,但是我想從java代碼中設置這些變量。有沒有辦法用java代碼設置這些變量?謝謝。從java代碼設置JRE變量

+0

「*我們要...... *」 這是功課呢?如果是這樣,請標記爲這樣。 – user1329572

+1

答案是否定的。請參閱http://stackoverflow.com/questions/763295/setting-jvm-heap-size-at-runtime。 –

+0

我們意味着我和我的團隊,它不是家庭作業..我需要從應用程序GUI設置這些環境變量。 – ajkush

回答

0

我得到了這個問題該解決方案: -

 public static void main(String[] args) { 
    Properties prop = new Properties(); 
    try { 
     String path=System.getenv("APPDATA"); 
      path=path.substring(0,path.lastIndexOf('\\')+1)+"LocalLow\\Sun\\Java\\Deployment\\deployment.properties"; 
      System.err.println(path); 

      prop.load(new FileInputStream(path)); 
      String jreIndex = null; 
      Enumeration enuKeys = prop.keys(); 
      while (enuKeys.hasMoreElements()) { 
       String key = (String) enuKeys.nextElement(); 
       String value = prop.getProperty(key); 
       if(value.contains("1.6.0_26")){ 
        String[] st2 = key.split("\\."); 
        if(st2.length==5){ 
         jreIndex = st2[3]; 
        } 
       } 
      } 
      //SystemSettings SysConfigsettings = new SystemSettings(); 
      if(jreIndex != null){ 
      // if (SysConfigsettings.getValue(SystemSettings.JRE_HEAP_SIZE)) 
       { 
       prop.setProperty("deployment.javaws.jre."+jreIndex+".args", "-Xmx1024m"); 
       } 
      } 
      prop.store(new FileOutputStream(path), "UpdatedHeapSize"); 
      System.out.println("First : "+prop.getProperty("deployment.javaws.jre.0.args")); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

}

3

您是否需要從正在運行的Java進程中設置這些設置?我不相信這是可能的。但是,您可以將它們設置爲來自調用Java程序的子進程,例如通過ProcessBuilder

ProcessBuilder pb = new ProcessBuilder("myCommand", "-Xmax", value); 
pb.directory(new File("dir")); 
Process p = pb.start();