Yêu cầu thg 11 10, 1:11 SA 140 0 2
  • 140 0 2
0

Static Object được lưu ở vùng nhớ nào trong Java

Chia sẻ
  • 140 0 2

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!

2 CÂU TRẢ LỜI


Đã trả lời thg 11 28, 2:53 SA
Đã được chấp nhận
+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ý.
Chia sẻ
Đã trả lời thg 11 11, 6:29 SA
+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.

Chia sẻ
Avatar Nguyen Van Hung @HungNguyenVan
thg 11 12, 11:01 CH

Cảm ơn anh đã chia sẻ ạ

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí