Ответ 1
Стек и куча - это память, выделенная ОС для JVM, которая работает в system Stack - это место памяти, в котором хранятся методы и локальные переменные. (в стеке также хранятся ссылки на переменные: примитивный или объект). Куча - это место памяти, в котором хранятся объекты и его переменная экземпляра.
Итак, чтобы подвести итог:
- Объекты класса, включая код метода и статические поля: куча.
- Объекты, включая поля экземпляра: куча.
- Локальные переменные и вызовы методов: stack
Кроме того, есть ли у меня переменная экземпляра для нескольких потоков?
Каждый поток будет иметь счетчик программ (ПК) и стек java. ПК будет использовать стек java для хранения промежуточных значений, динамического связывания, возвращаемых значений для методов и исключений отправки. Это используется в месте регистров.
Также для получения дополнительной информации о потоке вы действительно должны прочитать этот раздел Где создан объект Thread? Стек или куча?.
Если он хранится в области метода, как переменная экземпляра отличается от хранилище статических переменных?
Как вы можете видеть выше статические поля хранятся в куче. С другой стороны, локальные переменные хранятся в стеке.
//EDIT
Согласно комментариям Bruno Reis и Peter Lawrey, вы также должны прочитать о Анализ побега