你能告诉我内部工作ChannelSftp.get( "file_name")
吗?如果频繁使用此功能,从文件列表(600个10
kb的文件)中获取单个文件是否会导致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());
}
我正在启用持久性的Kubernetes集群中运行Ignite。每台机器都有一个24GB的Java堆,20GB专用于持久内存,内存限制为110GB。我的相关JVM选项是。在每个节点上运行DataStreamer数小时后,我的集群上的节点达到了它们的k8s内存限制,触发了OOM杀机。运行Java NMT后,我惊讶地发现分配给内部内存的空间数量巨大。 Kubernetes metrics证实了这一点:
我试图将Ignite用作键值对的内存数据库,其值范围从50MB到800MB不等。看起来Ignite通过JVM分配堆空间,它从不清理,即使缓存条目离开堆,被清除,没有连接的客户机和运行的操作。我的机器将无法处理这样的内存消耗,因此我正在寻找一种方法来清理一些内存。 我的测试场景如下: null 我正在使用pyignite瘦客户机,通过python脚本在本地测试Ignite: 该脚本将800 MB的数
我正在编写一个spring boot 2应用程序,我正在使用SQL批量复制功能在SQL Server2012数据库中插入几条记录。每插入700行,我就有600 MB的泄漏 我已经试用了Microsoft驱动程序版本6.4.0.jre8和7.2.2.jre8,但任何东西都改变了。我尝试为tomcat更改Hikari连接池,但结果是一样的。 为了调用Microsoft API,我使用了包装器框架(ht
我有一个Java应用程序,它合并了一些大文件。Java应用程序不在我的控制之下。Java应用程序的结果以大约90MB的大字符串返回给我的C程序,我在其中的一些算法中使用它。我多次调用execute方法。我的问题是,每次调用Java应用程序时,它都会保留更多内存,但不会释放内存。从这个垃圾收集和JNI调用问题中,我想到手动调用垃圾收集器,但它不会释放内存。有没有办法解决这个问题? 这是我的C程序
今天给大家聊聊咱们平时写代码的时候,最常见的String字符串代码,它的一些底层原理,以及使用不当可能引发的内存泄漏的问题,相信对于大家平时日常开发写代码会有一定的帮助。 String字符串在内存里是如何存储的? 首先呢,当我们平时在代码中写下一行String类型的代码时,大家知道这个String字符串在内存里是如何存储的吗?比如这样的一行代码:String username = “zhangsa
问题内容: 由于这是我第一次学习系统编程,因此我很难将规则束之高阁。现在,我对内存泄漏感到困惑。让我们考虑一个例子。说,Rust正在抛出一个Python将会捕获的指针(指向字符串)。 在Rust中,(我只是发送的指针) 在Python中,(我取消引用了指针) 现在,我的问题是释放内存。我认为应该在Python中将其释放,但随后所有权会突然增加。因为,似乎采用了不可变的参考。因此,我对于是否应该在R