Page 279 - 6253
P. 279

Будь-який  об'єкт,  створений  в  купі,  має  глобальний  доступ  і  на  нього  можуть

            посилатися з будь-якої частини програми.

                Строго тезами:

                     Всі об'єкти живуть в кучі і попадають туди при створенні.

                     Об'єкт складається з полів класу і методів.

                     В кучі виділяється місце під сам об'єкт, кількість виділеної пам'яті залежить

            від полів. Якщо полем служить інтова змінна, то не важливо, чи ми її ініціалізуємо

            “0”  чи  “10000000”,  об'єкт  займе  в  кучі  свої  біти,  +  стільки  байт,  скільки  вміщає

            int(+32 біти) і так з кожним полем.

                    Стекова  пам'ять  в  Java  працює  за  схемою  LIFO  (Останній-зайшов-Перший-

            вийшов - Last In First Out).

                    При  використанні  стека,  є  доступ  тільки  до  останнього  доданого  елемента.

            Видаливши цей елемент, користувач отримує доступ до передостаннього елемента і

            тд.  Для  зручності  можна  провести  аналогію  зі  стопкою  тарілок  або  магазином

            пістолета (останній заряджений патрон, буде поданий в патронник першим).

                    Всякий раз, коли викликається метод, в пам'яті стека створюється новий блок,

            який  містить  примітиви  і  посилання  на  інші  об'єкти  в  методі.  Як  тільки  метод

            закінчує  роботу,  блок  також  перестає  використовуватися,  тим  самим  надаючи

            доступ  для  наступного  методу.  Розмір  стекової  пам'яті  набагато  менший  обсягу

            пам'яті в купі.

                  Строгими тезами:


                     Всі методи живуть в стеку і попадають туди при виклику.

                     Змінні в методах також мають стекову пам’ять, так як вони локальні.

                     Якщо в методі створюється об'єкт, то він переміщується в кучу, а посилання

            на  нього  залишається  в  стеку  і  після  того,  як  метод  залишить  стек  –  об'єкт  стане

            жертвою  зборщика  мусора,  так  як  посилання  на  нього  не  буде  і  не  можливо  до

            об'єкта добратися.

                    Різниця між Stack і Heap пам'яттю в Java:

                     Купа  використовується  всіма  частинами  додатку  в  той  час  як  стек

            використовується тільки одним потоком виконання програми.

                     Кожного разу, коли створюється об'єкт, він завжди зберігається в купі, а в



                                                              278
   274   275   276   277   278   279   280   281   282   283   284