从应用程序代码输出JRuby堆空间

时间:2016-01-04 16:10:17

标签: jruby

是否有输出Java堆空间的方法,JRuby应用程序是从应用程序代码开始的(如-J-Xms2048m)?

2 个答案:

答案 0 :(得分:1)

正如@stephanlindauer所指出的那样,JVM命令行传入的值在JDK提供的Runtime JMX bean中可用。

另一种对JVM启动方式不太敏感的方法是使用Memory bean,如下所示:

membean = java.lang.management.ManagementFactory.memory_mx_bean
heap = membean.heap_memory_usage
puts heap.max

在没有特殊JRuby标志的系统上,输出“466092032”(大致反映我们的默认最大值为500MB),当指定最大2GB的堆(jruby -J-Xmx2g)时,它输出“1908932608”。

答案 1 :(得分:0)

结果表明,您可以通过环境变量放置传入的值,如下所示:

puts java.lang.System.getenv()['JRUBY_OPTS']

puts ENV['JRUBY_OPTS']

puts java.lang.management.ManagementFactory.getRuntimeMXBean().getInputArguments().to_s

请记得require "java"之前。