Давайте сначала определим, что такое утечка памяти в контексте Java - это ситуация, когда программа может ошибочно удерживать ссылку на объект, который никогда больше не используется во время остальной части выполнения программы.
Примером этого было бы забыть закрыть открытый поток:
class MemoryLeak {
private void startLeaking() throws IOException {
StringBuilder input = new StringBuilder();
URLConnection conn = new URL("www.example.com/file.txt").openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
while (br.readLine() != null) {
input.append(br.readLine());
}
}
public static void main(String[] args) throws IOException {
MemoryLeak ml = new MemoryLeak();
ml.startLeaking();
}
}