解决方案 »
- 用java开发SOA架构的系统
- linux 下部署java app问题
- struts 窗口问题
- ldap中如何认证工作站?userWorkstations
- 哪位大哥给点spring 和ajax的学习资料
- 100分求助:ftp下载图片直接显示在jsp,为什么不走下载器提示保存本地?
- 三问ejb的find(在线等待解答)
- 急!EJB中的jsp运行出错?
- 小弟求教各位对java相当了解的大虾!!!
- hibernate4 注解对象添加操作,延迟加载导致缓存大量重复数据, 求原因及处理方法
- 最近领导让我用hibernate+Spring整合做个模块,但是不是很熟悉,会,但是不是很精通..大家有什么速成的好书或者资料推荐么,只有五天时间。
- extremeComponents里面的table,如何禁用分页
我们的是数据库连接的问题,不释放资源。
数据库连接池从dbcp换成c3p0解决问题。不知道对你的有帮助没
因为我们数据量不是很大,一个小时2,30w条大概
对并发的顺序执行要求又很严,
就是说程序里sql语句调用顺序是a,b的话,执行顺序也要是a,b
只用了一个数据库的连接,这个连接一直不释放
然后把所有执行sql的地方全部放在一个队列里,
用这个连接一次执行这个队列
应该不会是数据库的资源的问题吧
现在有点麻烦的是服务器部署是在客户那边,
他们又不允许我们远程登录,
很多事情都只有告诉他们的运维人员每个步骤
然后他们来操作,下一个dump都要花半天时间
我们拿到之前几次的dump,确实查出有5,6个内存泄漏的地方
但是数据量并不大,最大一个也就占用300M的样子,
完全解释不了为什么那么那边内存会疯狂的上涨
而且修改了以后还是这个样子,最新的dump还没拿到最奇怪的问题是用top看见java进程占用的内存是8g,
表现出来也是对客户端的响应很慢
但是把当时的dump拿来看只有3g,
实际有效引用的地方只有1.3g,也就是所有的shallow size之和
如果加上未被引用的对象,shallow size在2.3g另外的5g内存不知道是被什么占用了把内存先设小店,然后开启GC日志
这个建议不错,先这么试试
可不可以找一个linux上更权威强力的工具来测呢,也可以印证一下top结果找到一个:http://valgrind.org/
其实两者都是准的,但是统计口径不同。
要注意到JVM所有申请的内存,首先不是全都让程序给消耗光了,其次更不见得就已经全部实际被分配完毕;各位应该记得Runtime对象有几个函数,比如:freeMemory()、totalMemory()。
top统计的是整个Java所有申请的内存,从操作系统角度来说,这是合理的。dump只是把Java中程序已经使用的部分导出来,从JVM的角度来说,这也是合理的。