我有一个由Web托管公司托管的Java应用程序.每隔几天我的应用就会失败:
[2011-03-09 15:52:14,501] ERROR http-12021-9
java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:597)
Run Code Online (Sandbox Code Playgroud)
托管公司表示这意味着我的应用程序正在泄漏内存,但我现有的工具显示可用内存仍然可用.由于错误总是创建一个新的本机线程,我的想法是问题出在JVM配置/操作系统资源中.
如何防止此错误发生?
我有一个相对高级别的架构问题。我的应用程序在集群中多个物理节点上的多个 JVM 上运行。如果我定义了一个 websocket 端点,以便它可以由任何 JVM 提供服务,我如何启动服务器发起的“发送”消息,以便任何 JVM 上的所有适当连接都可以发送消息?
我的意思是,如果用户 A 连接到 JVM-A,用户 B 连接到 JVM-B,然后在 JVM-C 上发生一个需要通知用户 A 和 B 的事件,这将如何工作?起初我想在分布式内存中共享连接/会话对象,但我不认为拥有该对象就足够了,因为物理连接在某个服务器上?
有没有更标准的方法来处理这个问题?