我正在使用glassfish v2,但我在tomcat中遇到了同樣的問題。glassfish/tomcat Java服務器加載類一次
服務器啓動後,我看到:
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用作內存存儲類。
它是一個單例類具有靜態Hashtable和getter和setter方法:
class KVStore
public static KVStore kvstore;
public Hashtable hash;
現在的問題,是一個階級。當我打電話給商店,並得到一個servelet我收到對象就好了。但是,對於兩個類或KVStore,servelet在兩者之間交替,並且在連續調用時永遠不會正確返回。
現在我真的需要將對象存儲在內存中。我如何強制這個類只能加載一次?或者創建一個全局可訪問的哈希表?
最後一件事,我正在部署一個jruby warbled war文件。如果沒有這種可能發生的實際方式,讓我知道,我會考慮一下。