Page 280 - 6253
P. 280
пам'яті стека міститься посилання на нього. Пам'ять стека містить тільки локальні
змінні примітивних типів і посилання на об'єкти в купі.
Об'єкти в купі доступні з будь-якої точки програми, в той час як стекова
пам'ять не може бути доступна для інших потоків.
Управління пам'яттю в стеці здійснюється за схемою LIFO.
Стекова пам'ять існує лише якийсь час роботи програми, а пам'ять у купі
живе з самого початку до кінця роботи програми.
Ми можемо використовувати -Xms і -Xmx опції JVM, щоб визначити
початковий і максимальний розмір пам'яті в купі. Для стека визначити розмір
пам'яті можна за допомогою опції -Xss.
Якщо пам'ять стека повністю зайнята, то Java Runtime викидає
java.lang.StackOverflowError, а якщо пам'ять купи заповнена, то випадає виняток
java.lang.OutOfMemoryError: Java Heap Space.
Розмір пам'яті стека набагато менше пам'яті в купі. Через простоту
розподілу пам'яті (LIFO), стековая пам'ять працює набагато швидше купи.
Приклад:
public static void main(String args[]){
A parent = new A(); //more code
}
class A{
B child = new B(); int e; //more code
}
class B{
int c; int d; //more code
}
279