服务器端程序内存泄漏

服务器端程序运行时内存一直在涨,怀疑存在内存泄漏,但程序又不能停止用LEAK DETECTOR检查,怎么看哪里有泄露?

兄弟, 我继续这分数, 我给你个切实有效的思路。 你先使用top 查看内存 先分析是java外部内存泄露还是堆内存泄露, 外部内存泄露,主要有线程太多占用内存和directByteBuffer占用。
方法2: 使用jconsle 连接到服务器的java进程中,注意连接去后可能会导致java进程运行慢。 使用命令jmap 打印出当前进程中的各个实例数量。 然后在使用jconsle中的 gc命令 去主动触发fullGC 然后再通过jmap命令 打印实例数量。
这时候你可以做一个对比。 找到没减少的那个实例,就说明该实例并没有被回收,泄露了。 当然你要注意当前正在使用的实例肯定不会被GC掉。 可能一次分析不出来 你可以多次这么做 最后选择每次分析结果的交集。 锁定泄露对象之后,就去啃代码

如果做了内存管理接口封装,那有很多办法,如果没做那就没办法,回去啃代码吧

后台 什么语言啊? 就用对应的检测工具啊, 视语言不同,,,

抓几个dump比较下吧,看看正常时候和内存高位的时候多了什么。。。

如果是java的话,建议用javabin目录下的工具查看分析内存变化。

我觉得应该先看看是不是服务代码里是否有什么机制,利用了部分内存进行了缓存之类

重启数据库试一下

可以将线程信息单独弄出来,如top -t之类,如果编码规范一些,给每个线程命一下名还是可以看出哪个线程内存泄漏,再看对应线程代码