2013-12-13 49 views
0

我想知道,在運行的jruby腳本中,設置了哪些java選項。有沒有辦法做到這一點?在jruby中獲取java選項的值

我的問題是這樣的:我知道有一些腳本比其他腳本需要更多的內存,我想在代碼中添加一個約束,以便執行將提前停止並帶有適當的警告,而不是內存不足在未來的某個特定時間。

也許我能幫貼在BEGIN {},如:

if is_set_joption?('-J-Xmx') then 
    if get_joption('-J-Xmx').match(/\d+/)[0].to_i < 1000 then 
     puts "You're gonna run out of memory..."; 
     abort(); 
    end 
else 
    puts "I recommend you start with -J-Xmx1000m."; 
    abort(); 
end 

(...其中is_set_joption?get_joption是由方法)

運行JRuby 1.7.8。

回答

0

可以這樣做:

require 'java'; 
java_import 'java.lang.Runtime'; 
mxm = Runtime.getRuntime.maxMemory.to_i; 

if mxm < (512 * 1024 * 1024) then 
    raise "You're gonna need a bigger boat."; 
end 
0

如果你在你的環境中設置了JAVA_OPTS,它將會在你的ENV中。你可以從中得到它。你已經在這個時候啓動了JVM,所以你需要在其他地方設置,比如在你的命令行中執行jruby -D

+0

在這種情況下,java選項全部作爲命令行'-J-something'參數傳遞。 – mwarin