亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

上傳和下載文件時使用內存泄漏(可能是因為使用 ChannelSftp.get )?

上傳和下載文件時使用內存泄漏(可能是因為使用 ChannelSftp.get )?

守著一只汪 2023-08-16 16:25:35
您能透露一下內部工作原理嗎ChannelSftp.get( "file_name")?如果頻繁使用此函數,使用此函數從文件列表(10 kb 的 600 個文件)中獲取單個文件會導致 Tomcat8 內存泄漏問題嗎?這是用于從遠程服務器上傳和獲取文件的代碼。public String connectRemote(String host, String user, String password, String     remotePath, String sFileName) throws IOException, JSchException, SftpException {    try {        String sFileNames ="";        Session session = connectSFTP(host, user, password);        Channel channel = session.openChannel("sftp");        channel.connect();        ChannelSftp chan = (ChannelSftp) channel;        try {            String ftpRemoteDirectory = "/Irismedical/Outbox_Eligibility";            chan.cd(ftpRemoteDirectory);            File ftest = new File(sFileName);            chan.put(new FileInputStream(ftest), ftest.getName());            sFileNames =  ftest.getName();        }        catch (Exception e) {            chan.disconnect();            session.disconnect();            return null;        }        chan.cd("/Irismedical/Inbox/Eligibility");        String sRes = null;        for (int i = 0;i<6 ; i++) {            try {                  sRes = convertInputStreamToString(                             chan.get(sFileNames+"_Response_271_1.edi"));                 if (sRes  != null ) {                     break;            } catch (Exception e ) {                if (i<3) {                    Thread.sleep(3000);                } else {                    Thread.sleep(5000);                }            }        }                    session.disconnect();        return sRes;    }    catch (Exception e) {        }        return null;    }}private static String convertInputStreamToString(InputStream inputStream)     throws IOException {    ByteArrayOutputStream result = new ByteArrayOutputStream();    byte[] buffer = new byte[1024];    int length;    while ((length = inputStream.read(buffer)) != -1) {        result.write(buffer, 0, length);    }    return result.toString(StandardCharsets.UTF_8.name());}
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您必須處理流。

FileInputStream上傳代碼中的 和下載代碼中InputStream返回的。ChannelSftp.get

查看完整回答
反對 回復 2023-08-16
  • 1 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號