2011-07-29 36 views

回答

3

悠可以得到...

RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean(); 
List<String> args=RuntimemxBean.getInputArguments(); 

for(int i=0;i<args.size();i++) { 
    System.out.println(args.get(i)); 
} 
+0

謝謝!這正是我需要的。 –

+1

但是如果它沒有被設置爲jvm參數,那麼您如何找出該值是什麼? – stu

+0

我相信它永遠是。至少每次我都檢查過。 –

3

如果在命令行中明確指定的選項接受的答案只能ALL JVM參數。從Java 6開始,您可以直接使用HotSpotDiagnosticMXBean訪問該選項。下面的Java代碼7可以方便閱讀:

final HotSpotDiagnosticMXBean hsdiag = ManagementFactory 
     .getPlatformMXBean(HotSpotDiagnosticMXBean.class); 
if (hsdiag != null) { 
    System.out.println(hsdiag.getVMOption("MaxDirectMemorySize")); 
} 

注意,這可能會返回的值爲零,這意味着使用默認設置,這等於Runtime.getRuntime().maxMemory()。例如,使用Windows 7上的Oracle JDK 7u71 64位,返回3,690,987,520。

或者,如果您願意訴諸訪問sun.misc包,可直接致電sun.misc.VM.maxDirectMemory()

+0

使用我的Windows 7機器上的Oracle JDK 7u75,得到:5,707,923,456,所以我認爲這個值是機器特定的。 –

相關問題