0
Static Object được lưu ở vùng nhớ nào trong Java
Chào mọi người, em có câu hỏi là static object thì được lưu ở vùng nhớ nào trong Java. Theo em hiều là Static Object vẫn sẽ được lưu ở vùng nhớ Heap như các Object khác. Chỉ khác là các Object khác thì các reference trong vùng nhớ stack sẽ trỏ đến nó. Còn Static Object thì các reference lưu trong vùng nhớ Method Area cụ thể là triển khai PermGem (trước Java 8) và MetaSpace (sau Java 8) trỏ đến. Em hiểu như này đúng không mọi người. Mong được mọi người giải đáp. Em xin cảm ơn!
Thêm một bình luận
2 CÂU TRẢ LỜI
+1
Em hiểu gần đúng, nhưng cần làm rõ hơn:
- Static Object cũng được lưu trong Heap, giống các object khác.
- Static references (tham chiếu tĩnh) được lưu trong Method Area (trước Java 8 là PermGen, sau Java 8 là MetaSpace).
- Sự khác biệt là static references không bị ràng buộc bởi instance của lớp và tồn tại xuyên suốt vòng đời của chương trình. Tóm lại: Object vẫn nằm ở Heap, còn static references nằm ở Method Area để quản lý.
+3
Đối với các đối tượng được tham chiếu bởi biến tĩnh (static objects), bản thân đối tượng vẫn được lưu trên Heap. bởi vì tất cả các đối tượng trong Java đều được lưu trên Heap.
Cảm ơn anh đã chia sẻ ạ