2010-12-01 55 views
5

我使用eclipse(編寫,調試)作爲IDE。在調試模式下,當我進行一些更改時,如初始化本地變量,它們會自動反映。在調試模式下,哪些代碼更改會自動反映在eclipse中?

但是其他的改變,如改變一個靜態變量的值;有時候我會收到一條消息,說我需要重新啓動虛擬機,有時我不會。

現在問題是什麼樣的變化會自動反映,哪些不會變化。

我使用遠程調試,但從eclipse運行程序時會有什麼區別嗎?

回答

2

這不是IDE功能,而是遠程調試的虛擬機功能。虛擬機現在可以處理變量初始化器內部邏輯的簡單變化,但不能用變化的類結構處理。

重新裝載正常處理,如果你的類結構並沒有改變:你不刪除或添加成員,方法或內部類,因爲添加成員或內部類改變了分配給類內存的大小。方法不會改變內存大小,但會改變它們的結構。

Here你可以找到一些解釋。

3

你看到Hotswap在行動。它僅限於更改方法體。更多信息here

0

在遠程調試,因爲在所有蝕不能互換不同的JVM中的類文件熱代碼替換是不可能的。

遠程調試器連接到不同的虛擬機和監視的是,遠程機器內部執行的代碼。只有源文件是本地的。

+0

權!我所做的是我在遠程機器上編譯我的類文件,從JVM運行的地方開始。只是遠程調試。 – 2010-12-01 10:37:41

0

靜態變量是一旦類被實例化的類變量。他們在上課時間實例化。因此,更改靜態變量將要求VM重新加載並實例化已更改的靜態變量。

這就是我所能提供的所有問題。

0

HotSwap非常有限,它只能重新加載簡單的方法體更改。

看看JRebel,它也可以重新加載其他代碼更改(例如添加/刪除字段/方法/註釋/枚舉值等)。 查看詳細的feature list

(請注意,JRebel的是一個商業產品,與現有的OSS和Scala開發人員免費許可證。)

相關問題