java实现一个需求用到了jsch,发现服务器内存会被占满。 写了个50进程的jsch-sftp测试连接 put一个文件
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(50);
for (int j = 0; j < 50; j++) {
fixedThreadPool.execute(new Thread("Thread1") {
[@Override](https://my.oschina.net/u/1162528)
public void run() {
while (true){
System.out.println(Thread.currentThread().getName());
dosftptest();
try {
Thread.sleep(10*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
}
total used free shared buff/cache available
Mem: 1839 137 828 0 873 1523 Swap: 0 0 0
total used free shared buff/cache available
Mem: 1839 748 123 9 966 829 Swap: 0 0 0
total used free shared buff/cache available
Mem: 1839 1052 79 14 707 495 Swap: 0 0 0
启动后内存一直下降,最后稳定到70-80之间差不多。 关闭java程序后,内存恢复。 total used free shared buff/cache available Mem: 1839 106 1214 0 518 1565 Swap: 0 0 0
所以java通过jsch sftp,是会占用服务器内存的,所以连接使用后必须进行关闭!
来源:oschina
链接:https://my.oschina.net/u/3005325/blog/2088264