我正在使用运行几个小时的简单测试程序。当堆稳定时诊断Java中的RSS泄漏
public static void main(String[] args) {
for (int i=1; i<500; i++) {
run();
}
}
public static void run() {
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
new String("Hello World");
}
}
}).start();
}
当我通过PS或pmap监视进程时,RSS部分增加,而jvisualvm报告堆稳定。
如果我总结所有的RSS匿名映射,他们随着时间的推移而增加。
我在Sun JDK 1.6.0_31上使用了Centos 5.7 x64。
RSS应该随着时间而增加吗?
您的程序是否创建了499个运行无限循环的线程? – ydroneaud 2012-02-21 13:28:24
嗨,即时通讯不知道什么是RSS的意思,但尝试改变这个新的字符串(“你好世界”);到这个“你好世界”;如果你不让它在你每次没有内存泄漏的时候创建一个新的字符串。无论如何,这个练习的重点是什么? – 2012-02-21 13:33:28
@yael:RSS表示驻留集大小,您可以在http://en.wikipedia.org/wiki/Resident_set_size – tr9sh 2012-02-21 16:49:12