Memory 当我使用HttpURLConnection检查web服务器时,Java进程内存正在增加
我的要求是检查Web服务器是否在某个特定端口侦听,如果没有运行,则需要启动该Web服务,因此为此我使用以下代码集。下面的代码工作正常,但问题是如果我长时间运行此代码,那么java进程内存将从60MB增加到1GB。请让我知道我哪里做错了Memory 当我使用HttpURLConnection检查web服务器时,Java进程内存正在增加,memory,httpurlconnection,Memory,Httpurlconnection,我的要求是检查Web服务器是否在某个特定端口侦听,如果没有运行,则需要启动该Web服务,因此为此我使用以下代码集。下面的代码工作正常,但问题是如果我长时间运行此代码,那么java进程内存将从60MB增加到1GB。请让我知道我哪里做错了 private boolean checkHttpsConnection(String urlString) { HttpURLConnection con = null; try { URL url = new URL(u
private boolean checkHttpsConnection(String urlString)
{
HttpURLConnection con = null;
try
{
URL url = new URL(urlString);
con = (HttpURLConnection)url.openConnection();
con.connect();
}
catch (Exception e)
{
LOGGER.error("some error happened ... ");
return false;
}
finally
{
if(con != null)
{
con.disconnect();
}
}
return true;
}
仅调用disconnect()是不够的,必须关闭基础流。disconnect()可以,但不一定关闭流。因此:
private boolean checkHttpsConnection(String urlString)
{
HttpURLConnection con = null;
try
{
URL url = new URL(urlString);
con = (HttpURLConnection)url.openConnection();
con.connect();
}
catch (Exception e)
{
LOGGER.error("some error happened ... ");
return false;
}
finally
{
if(con != null)
{
con.disconnect();
try
{
con.getInputStream().close();
}
catch (IOException ioe) {}
}
}
return true;
}
或者,更好的方法是使用“资源试用”模式。谢谢你,BadZen我将试用一次。好的,你必须启动一个探查器,查看哪些对象没有从堆中清除,然后。。。