2012-02-27 3 views
0

Является ли объект, хранящийся в куче, когда он является переменной экземпляра класса, а в стеке - это переменная функции? Это верно?Где хранится экземпляр объекта?

+1

Если объект хранится, это деталь реализации. Полагайтесь на это на свой страх и риск. – cHao

+0

@cHao: Действительно. Я не знаю о механизме .Net, но механизм JavaScript V8 для JavaScript (JavaScript, являющийся еще одной средой сбора мусора) достаточно умен, чтобы делать статический анализ кода и определять, где объекты используются когда-либо только в функции, а затем выпущены - и поместите их в стек, чтобы они были возвращены немедленно после возвращения. –

ответ

0

Ссылки сохраняются в стеке (не во всех случаях, хотя)

Примечание: только для локальных переменных. Например, переменные класса и они являются частью объекта, следовательно, в куче.

Пока объекты хранятся в куче.

  • Объекты класса, включая код метода и статические поля: куча.
  • Объекты, включая поля экземпляров: куча.
  • Локальные переменные и вызовы методов: стек
+0

очень верно..сли значит, все они будут храниться в куче – BlackFire27

+0

Нет. Есть некоторые странности в отношении типов значений (которые все еще являются объектами, но их часто можно найти в стеке). – cHao

+0

Посмотрите, что я обновил ответ ... –

2

Стек это место памяти, где методы и локальные переменные сохраняются.

Куча - это место памяти, где хранятся объекты и их переменная экземпляра.

Теперь переменные экземпляра представляют собой любые переменные без модификатора поля «static», которые определены внутри тела класса и вне тела метода любого класса.

Переменные экземпляра находятся в области действия до тех пор, пока их охватывающий объект находится в области видимости. Переменная экземпляра является частью объекта, который содержит его, и не может жить независимо от него.

Надеюсь, что это очистит ваши концепции.

+0

Не прояснил мой.Кажется, половина ответа на все, кроме фактического вопроса. – cHao

+0

какая часть не очищается? – Java

+0

Часть, которая была на самом деле в вопросе? : P Вы любили танцевать вокруг и рисовали всевозможные симпатичные точки, но вы действительно не потрудились связать их так, чтобы действительно отвечать на заданный вопрос. – cHao

Смежные вопросы