【问题标题】:Java Process OutOfMemoryExceptionJava 进程 OutOfMemoryException
【发布时间】: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


【解决方案1】:

确保您的代码不会导致内存泄漏。例如,打开的资源应该在使用后关闭。

您可以使用诸如 visualvm(与 JDK 捆绑)和 Yourkit(商业)等分析工具来识别内存问题。

您也可以尝试增加 Java 堆大小:

-Xms<size>        initial Java heap size
-Xmx<size>        maximum Java heap size

例如:

java -Xms512m -Xmx2g

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    相关资源
    最近更新 更多