26

ホット デプロイ チュートリアルを実行しましたが、うまくいきました。しかし、制限について質問があります(ポイント3)つまり

ホット デプロイは、メソッド実装のみのコード変更をサポートしています。新しいクラスまたは新しいメソッドを追加した場合でも、再起動が必要です。

基本的に、既存のメソッドに変更を加えた場合にサーバーの再起動が必要ない理由は、メソッドまたはクラスを追加する場合に必要です。

それがどのように機能するかについての私の理解:-既存のメソッドに変更を加えるか、新しいメソッドを導入すると、Eclipse はファイルを webserver の下の正しい場所に配置します。クラスがクラスローダによって perm gen 空間にすでにロードされている場合、permgen 空間からアンロードし、サーバーを再起動せずに内部で新しいものをロードして、新しい変更 (バイトコード) が反映されるようにします。あれは正しいですか ?

はいの場合、新しいメソッドと新しいクラス ファイルに対してホット デプロイメントが機能しないのはなぜですか?

4

4 に答える 4

3

なお、仕様自体は限定されません

ユビキタスな参照実装を含む、利用可能な実装の一部が制限されているのはたまたまです。

リモート VM に接続した後、 メソッドの追加またはクラスの再定義が許可されているかどうかを確認できます。

于 2016-01-29T19:10:15.790 に答える
2

smalltalk vm で Java を実行すれば可能です。Smalltalk はこれを基本的にずっと行ってきました。これが、Smalltalker がテスト駆動開発の優れた形式としてデバッガ駆動開発を行う傾向がある理由の 1 つです。Smalltalk VM は、必要なメモリ データ構造のクリーンアップを行います。Eliot Miranda の Spur (Squeak、Pharo、Cuis 用) と Gemstone では遅延処理が行われますが、それ以外の場合は、すべてのオブジェクトが移行されるまで待たなければならない場合があります。リファレンス実装の java vm は、atm で Java を実行できるどの smalltalk vm よりも最適化されている可能性があります。

于 2016-01-30T16:10:10.040 に答える