北京seo外包公司要靠譜的百度關(guān)鍵詞優(yōu)化師
java后端面試題大全
- 3.JVM
- 3.1 對(duì)象實(shí)例、類信息、常量、靜態(tài)變量分別在運(yùn)行時(shí)數(shù)據(jù)區(qū)的哪個(gè)位置?
- 3.2 java類的加載流程
- 3.3 java內(nèi)存溢出什么時(shí)候會(huì)發(fā)生以及解決方法
3.JVM
3.1 對(duì)象實(shí)例、類信息、常量、靜態(tài)變量分別在運(yùn)行時(shí)數(shù)據(jù)區(qū)的哪個(gè)位置?
- 堆
對(duì)象實(shí)例、String常量池、基本類型常量池、靜態(tài)變量 - 方法區(qū)
類信息、類常量池、運(yùn)行時(shí)常量池 - 虛擬機(jī)棧
臨時(shí)變量
3.2 java類的加載流程
java文件到最終運(yùn)行, 需要經(jīng)過編譯和類加載這兩個(gè)階段
編譯的過程:把.java文件編譯成.class文件
類加載的過程:把.class文件加載到j(luò)vm的內(nèi)存中
- 加載
通過類的全限定名獲取類的二進(jìn)制數(shù)據(jù), 這可以通過類加載器完成, 類加載器可以從文件系統(tǒng)、網(wǎng)絡(luò)、ZIP文件等地方獲取類文件的二進(jìn)制數(shù)據(jù)
將獲取的二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為方法區(qū)(或元空間)的運(yùn)行時(shí)數(shù)據(jù)結(jié)構(gòu), 這個(gè)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)了類的字段、方法、構(gòu)造方法等信息,同時(shí)也包含了類的常量池,即字面量(如字符串、final常量)和符號(hào)引用等。 - 驗(yàn)證
確保被加載的類的正確性. 這個(gè)階段主要包括文件格式驗(yàn)證、元數(shù)據(jù)驗(yàn)證、字節(jié)碼驗(yàn)證等,以確保類文件的正確性和安全性。 - 準(zhǔn)備
為類的靜態(tài)變量分配內(nèi)存并設(shè)置初始值, 這里的初始值通常是默認(rèn)值,比如數(shù)值類型的默認(rèn)值是0,引用類型的默認(rèn)值是null - 解析
類、接口、字段和方法的符號(hào)引用解析為直接引用 - 初始化
類的初始化方法
3.3 java內(nèi)存溢出什么時(shí)候會(huì)發(fā)生以及解決方法
一、內(nèi)存溢出的原因
如果內(nèi)存泄露的空間足夠大,就會(huì)導(dǎo)致內(nèi)存溢出
堆內(nèi)存中一個(gè)對(duì)象不再使用時(shí),垃圾回收器卻無法從內(nèi)存中刪除他們,導(dǎo)致內(nèi)存泄露。
二、內(nèi)存泄露的影響