1.虛擬機棧不用垃圾回收器?
虛擬機棧里的棧幀即對應代碼中的一個方法。代碼運行的過程,即棧幀入棧出棧的過程。
一個方法執行完,棧幀出棧后,即被銷毀。只有入棧出棧這樣簡單的操作,不需要設計復雜的垃圾回收算法來回收。隨着方法的執行,線程的結束正常回收即可。
在遞歸函數中,該方法還沒有結束,就一直不會出棧,如果循環的次數過多,棧空間有被擠爆的可能。會出現StackOverflowError 棧溢出。棧溢出也是內存溢出的一種情況。可通過-Xss (stack size)設置棧大小。
2.程序計數器沒有OOM?
程序計數器(Program Counter Register)也稱PC寄存器。是運行時數據區里唯一一塊沒有Out of Memory的區域。
只存下一個字節碼指令的地址,消耗內存小且固定,無論方法多深,他只存一條。
只針對一個線程,隨着線程的結束而銷毀。
https://www.cnblogs.com/niugang0920/p/12424671.html
3.線程是如何創建和銷毀的?
J2SE中 main函數即是主線程,程序執行完后自動銷戶。
Thread也可以創建多線程。