Rò rỉ không có bộ nhớ vẫn có thể tồn tại trong Java. Họ chỉ là một "loại khác".
Wiki: Memory Leak
Một rò rỉ bộ nhớ, khoa học máy tính (hoặc rò rỉ, trong bối cảnh này), xảy ra khi một chương trình máy tính tiêu thụ bộ nhớ nhưng là không thể phát hành nó [ký ức] trở lại hệ điều hành.
Trong trường hợp của Java nó (thường) là khi một không sử dụng đối tượng/không cần thiết không bao giờ làm đủ điều kiện để khai hoang. Ví dụ: một đối tượng có thể được lưu trữ trong Danh sách chung và không bao giờ bị xóa ngay cả khi đối tượng đó không bao giờ được truy cập sau này. Trong trường hợp này JVM sẽ không giải phóng đối tượng/bộ nhớ - , không thể - vì đối tượng có thể cần sau, ngay cả khi nó không bao giờ là.
(Là một sang một bên, một số đối tượng, chẳng hạn như ByteBuffers phân bổ trực tiếp cũng tiêu thụ "ra khỏi JVM đống" bộ nhớ mà có thể không được khai hoang một cách kịp thời do bản chất của finalizers và áp lực bộ nhớ.)
Trong trường hợp của Java, "rò rỉ bộ nhớ" là một vấn đề ngữ nghĩa và không quá nhiều vấn đề "không thể giải phóng trong bất kỳ trường hợp nào". Tất nhiên, với mã JNI/JNA lỗi, tất cả các cược sẽ tắt ;-)
Mã hóa vui vẻ.
Nguồn
2011-07-12 19:16:36
Có một chủ đề [ở đây] (http://stackoverflow.com/q/6470651/3009) thảo luận cách tạo rò rỉ bộ nhớ trong java. – highlycaffeinated