私のプログラムでは、必要に応じて一度に切断するために、いくつかのHTTPサーバーへの開いている接続のリストを追跡する必要があります。
私は次の問題に直面しました。HTTPサーバーに接続するとすべてが正常に機能しますが、HTTPSに接続すると、接続はリストから削除されません。メモリリークにつながります。
例:
package test;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
try {
ArrayList<URLConnection> al = new ArrayList<URLConnection>();
URL url = new URL("http://www.example.com");
URLConnection conn = url.openConnection();
al.add(conn);
System.out.println("Result of removing = " + al.remove(conn));
} catch (Exception ex) {
ex.printStackTrace(System.err);
}
}
}
URLが「 http://www.example.com 」を指している場合、「削除の結果=true」。
ただし、URLが「 https://www.example.com 」を指している場合は、「削除の結果=false」です。
私はそのような行動を理解していません。私にはいくつかの仮定がありますが、よくわかりません...
誰か助けてもらえますか?