4.總結
- java中堆和棧有什麼區別?
- 屬於不同的內存區域使用目的不同
- 棧常用於保存方法幀和局部變量,通常比堆小,不會在多線程間共享
- 對象總是在堆上分配,被整個jvm所有線程共享
- 彈夾(棧) 子彈(方法)稱爲棧幀
Public static void main(stirng[]
args 形參列表(相當於子彈殼)){
}
- jvm加載class文件的原理機制
- 類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader是一個重要的Java運行時系統組件,負責運行時查找和裝入類文件的類
- jvm怎麼判斷對象可以回收了
- 對象沒有引用(可達性分析法)
- 作用於發生未捕獲異常
- 程序在作用域正常執行完畢
- 程序執行了System。exit()
- 程序發生意外終止,被殺進程
- heap和stack有什麼區別
java的內存分爲兩類,一類是棧內存,一類是堆內存。棧內存是指程序進入一個方法時,會爲這個方法單獨分
配一塊私屬存儲空間,用於存儲這個方法內部的局部變量,當這個方法結束時,分配給這個方法的棧會釋放,這
個棧中的變量也將隨之釋放。
堆是與棧作用不同的內存,一般用於存放不在當前方法棧中的那些數據,例如,使用new創建的對象
都放在堆裏,所以,它不會隨方法的結束而消失。方法中的局部變量使用final修飾後,放在堆中,而不是棧