2011-10-04 27 views
1

全文: 我试图启动一个具有较大内存分配的哈德森实例,我目前正在使用由root拥有的脚本,不能直接修改以传递参数。但是,脚本当前在启动服务时传递$ JAVA_ARGS变量。我已将所需的参数导出到JAVA_ARGS,但该应用程序似乎仍受到旧内存限制的约束。在运行时查找jvm的启动命令(1.6.0_12)

问题: 有没有办法找出哪些命令行参数被用来启动实例。更具体地说,我期望找到传递给Xmx和Xms的值(如果有的话)。

java version "1.6.0_12" 
Java(TM) SE Runtime Environment (build 1.6.0_12-b04) 
Java HotSpot(TM) 64-Bit Server VM (build 11.2-b01, mixed mode) 

回答

2

经过一番搜索,我找到了一个非常简单的解决方案(我有点尴尬,错过了这么长时间)。只要你传递了正确的标志,你就可以看到命令行用ps命令在Linux中运行。我只是打了电话ps -fHu hudson,并能看到完整的命令行调用到Java显示传入的参数。

0

既然你可以导出$ JAVA_ARGS,也许你可以重写$ PATH欺骗脚本运行另一个程序,而不是JVM,这可能是一个程序,简单的地方将它的参数。

+0

该脚本指的是特定版本的Java,因此我无法重定向执行。 – chrisst

+0

也许您可以复制脚本,然后在类似条件下运行修改后的版本。 – njlarsson

+0

或者您可以通过操作系统实用程序监控命令,例如ps在类似Unix的操作系统中。 对此问题的答案感到抱歉,但我认为没有办法从Java访问JVM参数。你可能可以用C代码做一些事情,通过JNI调用,但是你不在Java之中,所以要做什么取决于你机器上的确切环境。 – njlarsson