glassfish/tomcat Java服务器加载类一次
我正在使用glassfish v2,但在tomcat中也遇到了同样的问题 服务器启动后,我看到:glassfish/tomcat Java服务器加载类一次,java,multithreading,glassfish,threadpool,java-server,Java,Multithreading,Glassfish,Threadpool,Java Server,我正在使用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.KVSto
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用作内存中的存储类
它是一个具有静态哈希表、getter和setter的单例类:
class KVStore
public static KVStore kvstore;
public Hashtable hash;
现在的问题是,只有一门课。当我调用store并获得servelet时,我接收到的对象很好。但是,对于两个类或KVStore,Servlet在这两个类之间交替,并且在连续调用时永远不会正确返回
现在我真的需要将对象存储在内存中。如何强制该类只加载一次?或者创建一个全局可访问的哈希表
最后一件事,我正在部署一个jruby warbled war文件。如果没有实际发生这种情况的方法,请告诉我,我会调查一下。所以这不是一个完整的答案,因为我仍然有bug: 但是使用jmap,我制作了一个单例 具体而言:
这是一个黑客行为。好的,fml。您很可能希望:
config.webxml.jruby.min.runtimes = 1
config.webxml.jruby.max.runtimes = 1
在你的warble.rb中,并称之为好的