Glassfish v2を使用していますが、Tomcatでも同じ問題が発生しています。
サーバーが起動すると、次のように表示されます。
sudo jmap -histo:live 14127 | grep KVStore
6222: 1 24 xxx.xxx.KVStore
しばらく使用すると、次のようになります。
sudo jmap -histo:live 14127 | grep KVStore
7240: 1 24 xxx.xxx.KVStore
7360: 1 24 xxx.xxx.KVStore
これはGlassfishのスケールアウトと関係があると思いますが、KVStoreをメモリ内ストレージクラスとして使用しているため、これは非常に問題があります。
これは、静的ハッシュテーブルとゲッターおよびセッターを備えたシングルトンクラスです。
class KVStore
public static KVStore kvstore;
public Hashtable hash;
ここで問題となるのは、1つのクラスでの問題です。ストアに電話してサーブレットを取得すると、オブジェクトは問題なく受信されます。ただし、2つのクラスまたはKVStoreを使用すると、サーブレットは2つを交互に使用し、呼び出しが連続して行われたときに正しく返されることはありません。
今、私は本当にオブジェクトをメモリに保存する必要があります。このクラスを強制的に1回だけロードするにはどうすればよいですか?または、グローバルにアクセス可能なハッシュテーブルを作成しますか?
最後に、jrubyのwarbledwarファイルをデプロイしています。これが実際に発生する可能性がない場合は、お知らせください。代わりに調査します。