用java写的程序,刚放上去的时候挺快,过两天就慢了,再就是死
问一下有没有拿给帮忙分析一下,这是不是由于内存泄露,而引起的,还是别的原因,有谁遇见过吗。。。
里面有没有用到IO流 socket什么的,用完没有关闭
...检查下里面是否有什么没写好。
用内存分析工具JCONSOLE来监控,看看是否在一直增长,查看堆与PERGEM
上传个附件吧
开始使用都是这样的,年吧以后就会好起来。注意连接池和内存的使用就好了
怎么死的,内存溢出还是其它原因
看下访问量,如果不大,那程序问题就很有可能,资源是不是没有释放,直到内存爆满,程序就挂了
怎么个慢法也没说,就拿查询数据库。。数据越多查询越慢
例如循环。。。数据越多循环越慢。。
内存泄露是什么?核泄漏?
如果是mysql数据库注意:[b]timeout配置[/b]
1. 默认情况mysql 回收空闲的连接时间8小时(单位:s)
[code="java"]
mysql> show variables like '%timeout%';
interactive_timeout 28800
wait_timeout 28800
[/code]
2. 通过配置文件my.cnf可以更改这个数据
[b]解决:[/b]
1. [b]方法一[/b]:jdbc驱动:autoReconnect=true,官方不推荐此方法,详见:http://bugs.mysql.com/bug.php?id=5020
2. c3p0解决办法,指定一个间隔连接下mysql,让mysql重新计算timeout:
[code="java"]
com.mchange.v2.c3p0.ComboPooledDataSource
[/code]
3. 或者在检出链接时进行connection的有效性验证也可行
死了之后,重启服务,就又快了是吧。
如果没有大量上传下载一类的,应该是数据操作后没有及时关闭连接,时间长后导致内存及数据连接耗尽。
有可能是从数据库查询的结果放在静态方法里面
只要在数据库查,静态方法会一直分配内存,
直到jvm崩溃为止,当服务重启后,静态方法中的内存地址被释放
速度又快起来了
原因可能有多种
1 SQL查询缓存没做好
2 缓存机制没做好
3 用户量访问大,服务器负载均衡没做好
检查两个方面:
1、内存泄漏问题
2、数据量大话的检查一下SQL语句是否耗性能
看起来应该是:
1、是否有数据库连接使用之后没有关闭;
2、是否使用了ImageIO;
3、是否自己做了应用缓存,但是缓存机制没有做好,导致应用缓存中数据日积月累,造成堆溢出;
4、是否是上传下载时IO操作后没有关闭。