Spring + WebSphere 8.5.5.13上有一个Java应用程序
我在具有WebSphere的开发服务器上和没有数据的远程预生产服务器上都有此应用程序的实例。
因此,当管理员重新启动预生产服务器时,会出现OutOfMemoryException
错误。
但是在开发服务器上没有这种问题。
您是否有算法可以解决此类问题?
增加jvm大小是否可以解决此问题?
如何为was上的应用程序增加jvm大小?
答案 0 :(得分:1)
当您超过堆大小时,您将拥有OutOfMemoryError
(不是OutOfMemoryException
)
当Java虚拟机由于内存不足而无法分配对象,并且垃圾回收器无法再提供更多内存时抛出
如果您在开发环境而不是在生产前环境中遇到此错误,我可以想象这是由于数据而不是分配给JVM的内存所致。
与OutOfMemoryError相关的最常见问题可以是:
答案 1 :(得分:1)
OutOfMemoryException
可能是由几件不同的事情引起的:
GC overhead limit exceeded
Unable to create new native thread
,则文件描述符不足假设应用程序和数据与DEV和PRE-PROD环境的配置不同。这是根本原因,应予以解决,因为开发人员无法在DEV上重现该问题。
答案 2 :(得分:1)
java.lang.OutOfMemoryError。在这里,垃圾收集器无法释放足够的空间来分配新对象,并且堆内存已固定且无法扩展。当大部分时间都花在垃圾回收上且释放的内存很少时,以及当内存不足以加载java类甚至偶数时,都可能引发此错误。
您必须查看抛出java.lang.OutOfMemoryError时打印的堆栈跟踪,因为可能有很多原因。以下是一些
线程thread_name中的异常:java.lang.OutOfMemoryError:Java堆空间 线程thread_name中的异常:java.lang.OutOfMemoryError:超出了GC开销限制 线程thread_name中的异常:java.lang.OutOfMemoryError:元空间 线程thread_name中的异常:java.lang.OutOfMemoryError:请求大小字节是有原因的。交换空间不足? 线程thread_name中的异常:java.lang.OutOfMemoryError:原因stack_trace_with_native_method
基于错误,我们可以相应地调整JVM设置。增加JVM可能永远无法解决问题,因为可能还有其他问题,例如内存泄漏。