是否有输出Java堆空间的方法,JRuby应用程序是从应用程序代码开始的(如-J-Xms2048m
)?
答案 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"
之前。