Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
glassfish/tomcat Java服务器加载类一次_Java_Multithreading_Glassfish_Threadpool_Java Server - Fatal编程技术网

glassfish/tomcat Java服务器加载类一次

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

我正在使用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用作内存中的存储类

它是一个具有静态哈希表、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中,并称之为好的