2011-10-04 84 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