摘要: 第一部分 類和類的裝載
我們來(lái)看一下類以及它們被JVM裝載的時(shí)候做了些什么?
閱讀全文
摘要: 大多數(shù)好的設(shè)計(jì)者象躲避瘟疫一樣來(lái)避免使用實(shí)現(xiàn)繼承(extends 關(guān)系)。實(shí)際上80%的代碼應(yīng)該完全用interfaces寫(xiě),而不是通過(guò)extends。“JAVA設(shè)計(jì)模式”一書(shū)詳細(xì)闡述了怎樣用接口繼承代替實(shí)現(xiàn)繼承。這篇文章描述設(shè)計(jì)者為什么會(huì)這么作。
閱讀全文
摘要: 如果您認(rèn)為 Java 游戲開(kāi)發(fā)人員是 Java 編程世界的一級(jí)方程式賽車手,那么您就會(huì)明白為什么他們會(huì)如此地重視程序的性能。 游戲開(kāi)發(fā)人員幾乎每天都要面對(duì)的性能問(wèn)題,往往超過(guò)了一般程序員考慮問(wèn)題的范圍。哪里可以找到這些特殊的開(kāi)發(fā)人員呢?Java 游戲社區(qū)就是一個(gè)好去處。 雖然在這個(gè)站點(diǎn)可能沒(méi)有很多關(guān)于服務(wù)器端的應(yīng)用,但是我們依然可以從中受益,看看這些“惜比特如金”的游戲開(kāi)發(fā)人員每天所面對(duì)的,我們往往能從中得到寶貴的經(jīng)驗(yàn)。讓我們開(kāi)始游戲吧!
閱讀全文
摘要: 首先,推薦對(duì)Java有一定理解的同仁一本書(shū)《Practical Java》。在《Practical Java》中也有一個(gè)章節(jié)介紹Java中關(guān)于傳值和傳引用的問(wèn)題,堪稱經(jīng)典。
《Practical Java》
閱讀全文
摘要: 通過(guò)使用一些輔助性工具來(lái)找到程序中的瓶頸,然后就可以對(duì)瓶頸部分的代碼進(jìn)行優(yōu)化。一般有兩種方案:即優(yōu)化代碼或更改設(shè)計(jì)方法。我們一般會(huì)選擇后者,因?yàn)椴蝗フ{(diào)用以下代碼要比調(diào)用一些優(yōu)化的代碼更能提高程序的性能。而一個(gè)設(shè)計(jì)良好的程序能夠精簡(jiǎn)代碼,從而提高性能。
閱讀全文
摘要: Java性能優(yōu)化技巧集錦
可供程序利用的資源是有限的,優(yōu)化的目的就是讓程序用盡可能少的資源完成預(yù)定的任務(wù)。
可供程序利用的資源(內(nèi)存、CPU時(shí)間、網(wǎng)絡(luò)帶寬等)是有限的,優(yōu)化的目的就是讓程序用盡可能少的資源完成預(yù)定的任務(wù)。優(yōu)化通常包含兩方面的內(nèi)容:減小代碼的體積,提高代碼的運(yùn)行效率。本文討論的主要是如何提高代碼的效率。
閱讀全文
摘要: 類加載是java語(yǔ)言提供的最強(qiáng)大的機(jī)制之一。盡管類加載并不是討論的熱點(diǎn)話題,但所有的編程人員都應(yīng)該了解其工作機(jī)制,明白如何做才能讓其滿足我們的需要。這能有效節(jié)省我們的編碼時(shí)間,從不斷調(diào)試ClassNotFoundException, ClassCastException的工作中解脫出來(lái)。
閱讀全文
摘要: 定制類加載器
要較好地控制類的加載,就要實(shí)現(xiàn)定制的類加載器。所有自定義的類加載器都應(yīng)繼承自java.lang.ClassLoader。而且在構(gòu)造方法中,我們也應(yīng)該設(shè)置父類加載器。然后重寫(xiě)findClass()方法。differentversionspush文件夾包含了一個(gè)叫做FileSystemClassLoader的自訂制的類加載器。其結(jié)構(gòu)如圖9所示。
閱讀全文
摘要: 1. 棧(stack)與堆(heap)都是Java用來(lái)在Ram中存放數(shù)據(jù)的地方。與C++不同,Java自動(dòng)管理?xiàng):投眩绦騿T不能直接地設(shè)置棧或堆。
2. 棧的優(yōu)勢(shì)是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。但缺點(diǎn)是,存在棧中的數(shù)據(jù)大小與生存期必須是確定的,缺乏靈活性。另外,棧數(shù)據(jù)可以共享,詳見(jiàn)第3點(diǎn)。堆的優(yōu)勢(shì)是可以動(dòng)態(tài)地分配內(nèi)存大小,生存期也不必事先告訴編譯器,Java的垃圾收集器會(huì)自動(dòng)收走這些不再使用的數(shù)據(jù)。但缺點(diǎn)是,由于要在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,存取速度較慢。
閱讀全文
摘要: 對(duì)于這個(gè)系列里的問(wèn)題,每個(gè)學(xué)Java的人都應(yīng)該搞懂。當(dāng)然,如果只是學(xué)Java玩玩就無(wú)所謂了。如果你認(rèn)為自己已經(jīng)超越初學(xué)者了,卻不很懂這些問(wèn)題,請(qǐng)將你自己重歸初學(xué)者行列。內(nèi)容均來(lái)自于CSDN的經(jīng)典老貼。
問(wèn)題一:我聲明了什么!
閱讀全文
摘要: 下面的論述針對(duì)32位系統(tǒng),對(duì)64位系統(tǒng)不適用,后敘。
經(jīng)常你寫(xiě)了一個(gè)程序,一測(cè)試,功能沒(méi)問(wèn)題,一看內(nèi)存占用也不多,就不去考慮其它的東西了。但可能程序使用了一個(gè)什么數(shù)據(jù)結(jié)構(gòu),會(huì)當(dāng)數(shù)據(jù)規(guī)模變大時(shí),內(nèi)存占用激增。
閱讀全文
摘要: 1. java中堆與棧
在Java程序運(yùn)行時(shí),有6個(gè)地方可以用于保存數(shù)據(jù):
(1) 寄存器。最快的保存區(qū)域,位于處理器內(nèi)部,數(shù)量十分有限,它是根據(jù)需要由編譯器分配。我們對(duì)此沒(méi)有直接的控制權(quán).
閱讀全文
摘要: 一、什么是Java虛擬機(jī)
當(dāng)你談到Java虛擬機(jī)時(shí),你可能是指:
1、抽象的Java虛擬機(jī)規(guī)范
2、一個(gè)具體的Java虛擬機(jī)實(shí)現(xiàn)
3、一個(gè)運(yùn)行的Java虛擬機(jī)實(shí)例
閱讀全文
摘要: 一、引言
Java虛擬機(jī)(JVM)的類裝載就是指將包含在類文件中的字節(jié)碼裝載到JVM中, 并使其成為JVM一部分的過(guò)程。JVM的類動(dòng)態(tài)裝載技術(shù)能夠在運(yùn)行時(shí)刻動(dòng)態(tài)地加載或者替換系統(tǒng)的某些功能模塊, 而不影響系統(tǒng)其他功能模塊的正常運(yùn)行。本文將分析JVM中的類裝載系統(tǒng),探討JVM中類裝載的原理、實(shí)現(xiàn)以及應(yīng)用。
閱讀全文
摘要: JVM(Java虛擬機(jī))一種用于計(jì)算設(shè)備的規(guī)范,可用不同的方式(軟件或硬件)加以實(shí)現(xiàn)。編譯虛擬機(jī)的指令集與編譯微處理器的指令集非常類似。Java虛擬機(jī)包括一套字節(jié)碼指令集、一組寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。
閱讀全文
摘要: Java的白皮書(shū)為我們提出了Java語(yǔ)言的11個(gè)關(guān)鍵特性
(1)Easy:Java的語(yǔ)法比C++的相對(duì)簡(jiǎn)單,另一個(gè)方面就是Java能使軟件在很小的機(jī)器上運(yùn)行,基礎(chǔ)解釋其和類庫(kù)的支持的大小約為40kb,增加基本的標(biāo)準(zhǔn)庫(kù)和線程支持的內(nèi)存需要增加125kb
閱讀全文