堆區:存儲的全是對象,(class可執行文件)
只有一個堆區, 而且被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身和數組本身
棧區:每個線程只包含一個棧區,棧中只存儲基礎數據本身和自定義對象引用
每個棧數據是私有的
棧分爲三個部分 基本類型變量區 執行環境上下文 操作指令區
方法區:被所有線程共享,方法區包含所有的class
方法區中包含都是在整個程序中唯一的元素,如class,static變量
內存溢出 out of memory,是指程序在申請內存時,沒有足夠的內存空間供其使用,出現out of memory;比如申請了一個integer,但給它存了long才能存下的數,那就是內存溢出。
內存泄露 memory leak,是指程序在申請內存後,無法釋放已申請的內存空間,一次內存泄露危害可以忽略,但內存泄露堆積後果很嚴重,無論多少內存,遲早會被佔光(長生命週期對象持有短生命週期對象的引用(static))靜態變量非靜態內部類
靜態內部類不會持有外部類引用