Làm thế nào để bạn tìm thấy rò rỉ bộ nhớ trong Java (sử dụng, ví dụ, JHat)? Tôi đã cố gắng để tải đống đổ lên trong JHat để có một cái nhìn cơ bản. Tuy nhiên, tôi không hiểu làm thế nào tôi có nghĩa vụ để có thể tìm thấy các tài liệu tham khảo gốc (ref) hoặc bất cứ điều gì nó được gọi là. Về cơ bản, tôi có thể nói rằng có vài trăm megabyte các mục bảng băm ([java.util.HashMap $ Entry hoặc một cái gì đó như thế), nhưng bản đồ được sử dụng khắp nơi ... Có cách nào để tìm kiếm các bản đồ lớn không , hoặc có thể tìm thấy rễ chung của cây đối tượng lớn?Cách tìm rò rỉ bộ nhớ Java
[Chỉnh sửa] Ok, tôi đã đọc câu trả lời cho đến nay nhưng hãy chỉ nói tôi là một tên khốn rẻ tiền (có nghĩa là tôi quan tâm nhiều hơn đến việc học cách sử dụng JHat hơn là trả tiền cho JProfiler). Ngoài ra, JHat luôn luôn có sẵn vì nó là một phần của JDK. Trừ khi tất nhiên không có cách nào với JHat nhưng sức mạnh vũ phu, nhưng tôi không thể tin rằng đó có thể là trường hợp.
Ngoài ra, tôi không nghĩ rằng tôi có thể thực sự sửa đổi (thêm ghi nhật ký tất cả kích thước bản đồ) và chạy nó đủ lâu để tôi nhận thấy sự rò rỉ.
Oracle có một trang liên quan ở đây: https: //docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr007.html#BABIIIAC – Laurel
Đây là một "phiếu bầu" khác cho JProfiler. Nó hoạt động khá tốt để phân tích heap, có giao diện người dùng tốt và hoạt động khá tốt. Như McKenzieG1 nói, 500 đô la rẻ hơn số lượng thời gian bạn có thể đốt cháy để tìm nguồn gốc cho những rò rỉ này. Theo như giá của các công cụ đi, nó không phải là xấu. – joev