ActiveMQ内存溢出内存释放问题

ainidehsj 2012-01-14 04:23:55
能进这个帖子的相信的或多或少懂AMQ,所有,谢谢各位的热心,我在使用AMQ的过程中遇到了一些问题,也不清楚是配置还是AMQ的问题,特请教,谢谢。
使用环境:
ActiveMQ版本是:5.5
Broker配置:
MemoryLimit:256m
Persistent:true
StoreLimit:10g
TempLimit:10g
使用Topic:
两个订阅者,其中一个离线。
发送端对一个文件进行分块,每块1M发送到AMQ,通过jconsole分析发现
1.每发送一个块消息,AMQ内存就上涨5,6M。
2.在线的订阅者接收完消息后,内存使用大致停留在发送完最后一块消息出处,手动在jconsole中执行GC,没有明显下降。
3.将另外一个订阅者启动,接收完所有消息,内存依旧没有下降,手动在jconsole中执行GC,内存回到初始正常范围。
4.如果发送一个较大的文件(比broker配置的内存大),在jconsole中发送,amq内存直线上升,直到达到Amq最大内存,消息发送端报出内存溢出停止,然后amq内存一直停在最大值。当订阅者接收完后,执行GC,内存才会释放。
下面是jconsole与JProfiler监控图,共两张,
第一张是消息发送完,一个在线订阅者接收完后的内存使用情况。
第二张是离线订阅者启动接收完消息,并手动在jconsole中执行GC的结果

...全文
1473 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlcoasis 2012-09-28
  • 打赏
  • 举报
回复
policyEntry 设置似乎没起什么作用。
消息加入TTL,应该是可行的。有些policyEntry依赖TTL 像oldest

如果发送间隔比较长
<policyEntry memoryLimit="10mb" producerFlowControl="false" queue=">" advisoryForConsumed="false" advisoryForDelivery="false" gcInactiveDestinations="true" inactiveTimoutBeforeGC="10000">
如上,10秒没消息删除topic

ainidehsj 2012-01-17
  • 打赏
  • 举报
回复
自己顶一下。
ainidehsj 2012-01-16
  • 打赏
  • 举报
回复
晕,为何就没人回复啊,大虾哪去了。
ainidehsj 2012-01-14
  • 打赏
  • 举报
回复
图片太大,有意者请下载后打开看。
hashmap的底层原理 hashmap产生死锁的原因 hashmap的容量为什么一定要是2的幂呢 TreeMap的底层原理 HashMap,Hashtable和ConcurrentHashMap的区别 在ArrayList和LinkedList尾部添加元素,谁的效率更高 如果HashMap或者hashTable的key是一个自定义的类该怎么办 为什么重写equals还要重写hashCode? 介绍一下volatile jdk1.5新特性 jdk1.7新特性 jdk1.8新特性 java语言有哪些优点? 同一个.java文件中是否可以有多个main方法 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 如何在main方法执行前输出”hello world” java程序的初始化顺序 请说出作用域public,private,protected,以及不写时的区别 为什么java中有些接口没有任何方法 java中的clone方法有什么作用 面向对象有哪些特征 面向对象的开发方式有什么优点 组合和继承有什么区别 多态的实现机制是什么 重写和重载的区别 抽象类和接口有什么区别 break如果跳出多重循环 final,finally和finalize有什么区别 使用switch时有哪些注意事项 instanceof有什么作用 什么是不可变类 类型转换 Math类的round,ceil和floor方法 值传递和引用传递有什么不同? char型变量是否可以存储一个中文汉字 s=null和s=” ”是否相同 new String(“abc”)创建了几个对象 String变量做“+”运算时的编译优化 "=="和equals方法究竟有什么区别 String,StringBuffer,StringBuilder有什么区别 java中的数组是不是对象 数组初始化的方式有哪几种 length属性和length()方法有什么区别 finally块中的代码什么时候被执行 Java中的异常处理机制的简单原理和应用。 java socket java序列化 JVM加载class文件的原理 双亲委派模型 为什么要自定义类加载器 如何自定义类加载器 什么是GC 内存泄漏和内存溢出 Java的内存模型(JVM的内存划分) JVM内存模型1.7和1.8的区别 如何判断一个对象是否是垃圾对象 垃圾回收算法 Minor GC和Full GC 垃圾收集器 集合的继承体系 Collection 和 Collections的区别。 如何通过jdbc访问数据库 JDBC处理事务采用什么方法 Statement和PreparedStatement的区别 getString()方法和getObject()方法有什么区别 jdbc和hibernate有什么区别 http1.0和http1.1和http2.0的区别 http和https的区别 http缓存 cookie和session forward与redirect区别 页面请求的工作流程 HTTP中的GET和POST方法有什么区别 什么是Servlet servlet是线程安全的吗 Servlet的生命周期 JSP和Servlet的区别和联系 什么是MVC模型 TCP的连接和释放过程 什么是长连接和短连接 长连接是如何实现的 计算机网络体系结构 谈谈你对Struts的理解。 谈谈你对Hibernate的理解。 谈谈你对Lucene和solr的理解 谈谈你对ActiveMQ的理解 Spring的IOC,DI和AOP 谈谈你对webservice和dubbo的理解 谈谈你的SOA的理解。 谈谈你对freemarker的理解 谈谈你对springMVC的理解 谈谈你对mybatis的理解 hibernate和mybatis的区别 同步接口和异步接口的区别 为什么要加入锁机制 如何确定是否应该上锁?即如何判断是否有线程安全问题 什么是markword 乐观锁和悲观锁 偏向锁 轻量级锁 自旋锁 自适应自旋锁 重量级锁 synchronized 可重入锁 土方法实现可重入锁 使用AQS类实现可重入锁 CAS MySQL 中的行级锁、表级锁和页级锁 java中的死锁 公平锁和非公平锁 锁的总结 锁的优化 .......... 还有好多,不想写了,太多了,都是题主呕心沥血总结的

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧