【发布时间】:2015-12-06 05:58:07
【问题描述】:
我在 eclipse(Kepler) 中创建了动态 Web 项目。在我的应用程序中,我使用了 Spring、Hibernate、JSF、JMS 和 Quartz 调度程序。我想做的是,我想运行一个程序来将数据库值发送到ActiveMQ 并通过实现MessageListener 来收听。我的应用程序每隔 5 秒发送一次值,它工作正常。但是在向ActiveMQ 发送了 15500 条消息后,它引发了以下错误。为什么会发生这种情况?
Exception in thread "ActiveMQ InactivityMonitor Worker" java.lang.OutOfMemoryError: Java heap space
at java.lang.AbstractStringBuilder.<init>(Unknown Source)
at java.lang.StringBuffer.<init>(Unknown Source)
at org.slf4j.helpers.MessageFormatter.arrayFormat(MessageFormatter.java:194)
at org.slf4j.helpers.MessageFormatter.format(MessageFormatter.java:124)
at org.slf4j.impl.Log4jLoggerAdapter.debug(Log4jLoggerAdapter.java:228)
at org.apache.activemq.transport.AbstractInactivityMonitor$3.run(AbstractInactivityMonitor.java:161)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
线程异常:
"org.springframework.jms.listener.DefaultMessageListenerContainer#0-2" java.lang.OutOfMemoryError: Java 堆空间 线程“DefaultQuartzScheduler_QuartzSchedulerThread”中的异常 java.lang.OutOfMemoryError:Java 堆空间
【问题讨论】:
-
使用像YourKit这样的分析工具来识别代码的哪一部分使用了你的内存并修复它。
标签: java spring hibernate jms activemq