摘要:知識點(diǎn)總結(jié)內(nèi)存分析知識點(diǎn)總結(jié)面向?qū)ο髮ο髢?nèi)存類是創(chuàng)建對象的模板對象的使用時(shí)通過引用進(jìn)行的基本數(shù)據(jù)類型直接賦值,引用類型傳遞的是一個(gè)地址棧存放局部變量堆存放出來的對象方法區(qū)存放類的信息代碼變量常量池字符串常量等張三王武李四垃圾回收機(jī)制對象空間
Java知識點(diǎn)總結(jié)(內(nèi)存分析)
@(Java知識點(diǎn)總結(jié))[Java, Java面向?qū)ο骫
[toc]
對象內(nèi)存 類是創(chuàng)建對象的模板Java對象的使用時(shí)通過引用進(jìn)行的
基本數(shù)據(jù)類型直接賦值,引用類型傳遞的是一個(gè)地址
棧:存放局部變量
堆:存放new出來的對象
方法區(qū):存放類的信息(代碼) 、static變量、常量池(字符串常量)等...
Student s1 = new Student(); s1.name="張三"; s1.study(); s1.sayHello("王武"); Student s2 = new Student(); s2.age = 18; s2.name="李四";垃圾回收機(jī)制(Garbage Collection)
對象空間的分配:使用new關(guān)鍵字即可
對象空間的釋放:將對象賦值null即可。垃圾回收器將負(fù)責(zé)回收所有"不可達(dá)"對象的內(nèi)存空間
要點(diǎn):程序員無權(quán)調(diào)用垃圾回收器
程序員可以通過System.gc() 通知GC運(yùn)行,但是Java規(guī)范并不能保證立即運(yùn)行
finalize方法,是java提供程序員用來釋放對象,或資源的方法,但是盡量少用
一個(gè)對象沒有被引用,就會(huì)被Java垃圾回收機(jī)制回收
static內(nèi)存在類中,用static聲明的成員變量為靜態(tài)變量,或者叫做:類屬性,類變量,從屬于類,給對象分配的內(nèi)存里沒有
它為類的公用變量,屬于類,被該類的所有實(shí)例共享,在類被載入時(shí)被顯示初始化
對于該類的所有對象來說,static成員變量只有一份,被該類的所有對象共享
可以使用"對象.類屬性"來調(diào)用。不過一般都是用"類名.類屬性"
static變量置于方法區(qū)中
用static聲明的方法為靜態(tài)方法
類名.方法名調(diào)用
在調(diào)用該方法時(shí),不會(huì)將對象的引用傳遞給它,所以在static方法中,不可訪問非static的成員
靜態(tài)初始化代碼塊
static{
...
}
如果希望加載后,對整個(gè)類進(jìn)行某些初始化操作,可以使用static初始化塊
是在類初始化時(shí)執(zhí)行,不是在創(chuàng)建對象時(shí)執(zhí)行
靜態(tài)初始化塊中不能訪問非static成員
執(zhí)行順序:上溯到Object類,先執(zhí)行Object的靜態(tài)初始化塊,再向下執(zhí)行子類的靜態(tài)初始化塊,直到我們的類的靜態(tài)初始化塊為止
多態(tài)內(nèi)存多態(tài)性是OOP的一個(gè)重要特性,主要是用來實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編的,換句話說,就是程序的最終狀態(tài)只有在執(zhí)行過程中才被決定而非在編譯期間就決定了。
這對于大型信息來說能提高系統(tǒng)的靈活性和擴(kuò)展性
引用變量的兩種類型:
編譯時(shí)類型 (模糊一點(diǎn),一般是一個(gè)父類)
由聲明時(shí)的類型決定
運(yùn)行時(shí)類型(運(yùn)行時(shí),具體哪個(gè)子類就是哪個(gè)子類)
由實(shí)際對應(yīng)的對象類型決定
多態(tài)的存在要有3個(gè)必要條件:
要有繼承
要有方法重寫
父類引用指向子類對象
子類如果重寫了父類中的方法,方法調(diào)用的時(shí)候與實(shí)際類類型相綁定(傳遞的隱式參數(shù)this指向的開辟內(nèi)存空間的類的對象,而不是父類的對象)
public class Test { public static void testAnimalVoice(Animal c) { c.voice(); if (c instanceof Cat) { ((Cat) c).catchMouse(); } } public static void main(String[] args) { Animal a = new Cat(); Cat a2 = (Cat) a; testAnimalVoice(a); } } class Animal { void voice() { System.out.println("發(fā)出動(dòng)物的叫聲"); } } class Cat extends Animal { private String name = "Tom"; void catchMouse() { //方法存在隱式參數(shù)this和super super.voice(); System.out.println(this.name+"抓老鼠"); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/69144.html
摘要:然而,中依然有可能發(fā)生內(nèi)存泄漏。所以你的安卓快速定位解決內(nèi)存泄漏掘金昨天是個(gè)好日子,程序員的節(jié)日,在這里給所有的程序員送上一份遲到的祝福。應(yīng)用內(nèi)存泄漏的定位分析與解決策略掘金,大家好,我是。 Android 性能優(yōu)化之巧用軟引用與弱引用優(yōu)化內(nèi)存使用 - Android - 掘金前言: 從事Android開發(fā)的同學(xué)都知道移動(dòng)設(shè)備的內(nèi)存使用是非常敏感的話題,今天我們來看下如何使用軟引用與弱...
摘要:導(dǎo)讀閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類知識點(diǎn),你也可以按照文章中所列的知識體系對比自身,對自己進(jìn)行查漏補(bǔ)缺,覺得本文對你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時(shí)間,筆者會(huì)由淺到深帶你一步一步了解一個(gè)資深架構(gòu)師所要掌握的各類知識點(diǎn),你也可以按照文章中所列的知識體系對比自身,對自己...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
閱讀 3139·2023-04-26 02:27
閱讀 2877·2021-11-22 13:54
閱讀 970·2021-11-12 10:36
閱讀 3839·2021-10-09 09:44
閱讀 3242·2021-10-09 09:41
閱讀 1343·2021-09-22 10:02
閱讀 2951·2019-08-30 15:56
閱讀 3172·2019-08-30 11:02