2009-06-29 12 views
10

.NetのAppDomainに似たJava抽象があるかどうか不思議です。Java AppDomainのような抽象化?

特にColdFusion/J2EEサーバーでは数日おきに再起動する必要があることがわかっています。これは、メモリリークが遅く、まだ簡単に追跡できなかったためです。これは私たちの長期的なプロセスを破壊する可能性があり、特定の期間/メモリのしきい値を過ぎて老化するにつれて、人々を新しいJVMにゆっくりと押し込む方法が本当に好きです。

私の限定された.Netエクスペリエンスから、これは、IISとAppDomainsがメモリ圧迫下にあるAppDomainsをリサイクルすることによってかなりシームレスに管理できる1つの状況だと確信しています。このシナリオでAppDomainsを手伝ってくれたら教えてください。

提案がありますか?

答えて

10

こちらの回答は少し誤解を招く場合があります。単に「いいえ、あなたはできません」と言っているのは全話ではありません。問題は、プロセスを再起動せずにJVMプロセスから漏れたコードを削除するために、サーバー・プロセスでJavaクラスをアンロードすることに焦点を当てています。 OPは、AppDomainが提供するプロセスのようなメモリ分離機能を要求するのではなく、実行中のJVMでクラスをアンロードする機能を求めています。AppDomainはプロセスではないが、オペレーティングシステムによって一流のプロセスが提供する分離の側面のいくつかを享受しているので、私はプロセスのように言う。上記の分離JSRは、この「プロセスのような」分離を指しています。 JVMをホストするOSプロセスをサイクリングすることなく、Java ClassLoaderおよびクラスをアンロードすることは可能です。いくつかの方法がここに記載されています:SO 148681。 Javaでこれを行うのは簡単ではなく、エレガントですが、可能です。

+0

そうです。応答していただきありがとうございます。 –

0

メモリ消費量やメモリ使用量の増加などの時間や特定の基準に基づいて個別のJVMをリサイクルすることは、WebSphereと連携するApp Serverの高度なバージョンの機能です。あなたのApp Serverにそのような機能がない場合、その機能のようなものを与えるためにいくつかのシェルスクリプトを作ります。

これは仮定して非常にうまく動作します:

A)。ユーザーからのリクエストは、より大きなJVMセットにスプレーされます。 b)。すべての要求がステートレスであるか、または何らかの状態複製機能があること。レプリケーションはWebSphereとWebLogicの機能ですが、私は他のアプリケーションサーバーにも機能があると思います。

このような環境では、他のサーバーに「ゆっくり」移動する必要はありません。いずれかのサーブ/ JVMを安全に停止できることと、これらのセッションが別のインスタンスでピックアップすることだけを知る必要があります。

+0

ご意見ありがとうございます。残念ながら、私のWebアプリケーションは現在、ステートレスではなく、セッションはシリアライズ可能ではないため、レプリケーションはできません。おそらく、私はそこですべてをシリアル化することで最も効果的になるだろう。 –

8

残念ながら、

Javaの類似概念は、JSR 121で最初に登場したIsolateです。これは、同じJVMで実行されている異なるアプリケーション間の安全な分離と通信を可能にする将来のJVM機能のAPIでした。 JSRが公開された後(2004年頃)、Sunの1つの研究チームがバルセロナのプロジェクトに取り組みました。このプロジェクトは、SunのHotSpot 1.5 VMにIsolation APIを実装しようとしました。 2年後、彼らはSPARC/Solarisのプロトタイプをリリースしました。 Windows/Linuxのバージョンは安定性の問題のためにリリースされませんでした。

最近、SUNは積極的に提供していない環境で「複数のプロセス」を提供することに重点を置いて、J2MEに限定されたバージョンのIsolation APIを導入しました。最近では、Sunに、標準JVMへのIsolate APIの実装状況についても尋ねました。彼らの対応は限られたサポートのJVMをリリースする予定でした。彼らは、アイソレートをロード/アンロードする機能を提供する予定ですが、アイソレート間の通信はできません。

また、JanosVM(Java 1.1)と呼ばれるIsolates互換のJVMバージョンを構築するための古いリサーチャーがありましたが、今日はどんな用途にも使用できないと考えられます。

希望します。

+0

ありがとう!それは本当に興味深く有益でした! –