2012-09-04 21 views
5

Nếu tôi tạo một khối tĩnh và tạo một đối tượng ở đó, nói về một số lớp khác, đối tượng sẽ được tạo trên heap hoặc trên ngăn xếp?Vị trí trong bộ nhớ là đối tượng được đặt khi chúng được tạo trong một khối tĩnh?

class Hello { 
    static { 
     Abc abcObject=new Abc(); 
    } 
    // Other Code... 
} 
+0

Nó sẽ có trên heap. – Santosh

+0

Cảm ơn ................. –

+0

Chào mừng bạn đến với Stack Overflow. Khi ai đó giúp bạn ở đây, thông thường là chấp nhận câu trả lời. Bạn có thể làm điều này bằng cách nhấp vào đường viền của dấu kiểm bên dưới bên cạnh câu trả lời bạn tin là chính xác. Cảm ơn! –

Trả lời

4

Đối tượng được tạo trong heap, nhưng tham chiếu đến đối tượng nằm trong ngăn xếp.

Biến số abcObject mà bạn đã tạo nằm trong ngăn xếp. Địa chỉ này chứa địa chỉ bộ nhớ trong vùng chứa đối tượng new Abc() được lưu trữ.

+0

_reference đối tượng là trong stack_ bạn có thể xây dựng/ – Santosh

+0

@Santosh Tất cả các biến cục bộ đều nằm trong ngăn xếp. –

+0

Aahh ... hiểu rồi. Xin lỗi :) – Santosh

7

Đối tượng luôn trên heap không phân biệt tĩnh (hoặc) không tĩnh.

Tài liệu tham khảo sẽ nằm trên ngăn xếp.

+0

+1 'abcObject' là biến cục bộ là tham chiếu đến đối tượng. Điều này sẽ được trên ngăn xếp. Đối tượng được tham chiếu sẽ nằm trên heap. –

+0

@PeterLawrey: Đồng ý và câu trả lời được cập nhật. – kosa

+0

@ user1646626: Bạn được chào đón. Thưởng thức mã hóa. – kosa

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