2014-11-28 14 views
5

Trong Java, có các đối tượng đặc biệt được gọi là Root Collection Rác (Gốc GC). Chúng phục vụ như một đối tượng gốc cho cơ chế đánh dấu Bộ sưu tập rác (xem hình).Nguồn gốc GC cho lớp học là gì?

enter image description here

This article mô tả bốn loại rễ GC:

  • biến địa phương
  • đề tích cực
  • biến tĩnh
  • JNI tham chiếu

Nó cũng được đề cập, rằng:

Lớp học có thể được thu gom rác.

Rễ GC không được thu thập do đó, bản thân các lớp không phải là rễ GC.

Vậy nguồn gốc GC cho lớp học là gì?

+0

Rễ GC là những mà bạn đã liệt kê cho mọi thứ.Câu hỏi của bạn thực sự là về loại đối tượng nào thường giữ tham chiếu đến các đối tượng lớp. – biziclop

Trả lời

9

Vậy nguồn gốc GC cho lớp học là gì?

Trình nạp lớp, hiệu quả - thông qua các gốc GC khác.

Nếu không có gì có thể liên lạc với trình nạp lớp - nghĩa là không có gì có thể tiếp cận bất kỳ trường hợp nào của lớp được tạo bởi trình nạp lớp đó - thì cả trình nạp lớp và lớp được tạo đủ điều kiện để thu thập rác.

+0

instance classloader nằm ở heap? – gstackoverflow

+0

@gstackoverflow: Chắc chắn chúng không nằm trong ngăn xếp. Phần chính xác nào của heap là một vấn đề khác. –

+0

và không phải là thế hệ vĩnh viễn/metaspace? – gstackoverflow

1

Gốc bộ sưu tập rác là một đối tượng có thể truy cập từ bên ngoài vùng heap.

Memory Analyzer phân loại rễ thu gom rác thải theo danh sách sau đây: (. Java * vv)

  1. Lớp nạp bởi hệ thống ClassLoader
    • trường tĩnh trong JDK lớp
  2. Sống chủ đề
    • ngăn xếp - vars chính, tham số phương pháp
    • java.lange.Thread dụ
  3. Object tổ chức như màn hình đồng bộ hóa
  4. JNI tham chiếu
  5. đặc biệt JVM ...

Source 1 Source 2

Các vấn đề liên quan