freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

jee性能問(wèn)題(編輯修改稿)

2025-08-31 09:22 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 下面的對(duì)象中:  1. 靜態(tài)變量   2. 長(zhǎng)生命周期的類(lèi)變量  每個(gè)類(lèi)的靜態(tài)變量被JVM(JAVA虛擬機(jī))所控制,他們存在與否和類(lèi)是否已經(jīng)被初始化無(wú)關(guān)。一個(gè)類(lèi)的所有實(shí)例共用一個(gè)存儲(chǔ)靜態(tài)變量的地方,因此在任何一個(gè)實(shí)例中修改靜態(tài)變量會(huì)影響這個(gè)類(lèi)的其他實(shí)例。因此,如果一個(gè)程序在靜態(tài)變量中存放了一個(gè)對(duì)象,如果這個(gè)變量生命周期沒(méi)有到,那么這個(gè)對(duì)象就不會(huì)被JVM釋放。這些靜態(tài)對(duì)象是造成內(nèi)存泄漏的主要原因?! ∽詈?,對(duì)象能夠被放到內(nèi)部數(shù)據(jù)類(lèi)型或者長(zhǎng)生命周期類(lèi)中的成員變量中,例如SERVLET。當(dāng)一個(gè)SERVLET被創(chuàng)建并且被裝載到內(nèi)存,它在內(nèi)存中僅有一個(gè)實(shí)例,采用多線(xiàn)程去訪(fǎng)問(wèn)這個(gè)SERVLET實(shí)例。如果在INIT()方法中裝載配置信息,將他存儲(chǔ)于類(lèi)變量中,那么當(dāng)需要維護(hù)的時(shí)候就可以隨時(shí)讀出這些信息,這樣所有的對(duì)象就用相同的配置。我常碰到的一個(gè)問(wèn)題就是利用SERVLET類(lèi)變量去存儲(chǔ)象頁(yè)面緩存這樣的信息。在他們自己內(nèi)部本身存貯這些緩存配置是個(gè)不錯(cuò)的選擇,但存貯在SERVLET中是最糟糕的情況。如果你需要使用緩存,你最好使用第三方控制插件,例如 TANGOSOL的COHERENCE?! ‘?dāng)在頁(yè)面或者請(qǐng)求范圍中利用變量存放對(duì)象的時(shí)候,在他們結(jié)束的時(shí)候這些對(duì)象會(huì)自動(dòng)釋放。同樣,在SESSION中存放對(duì)象的時(shí)候,當(dāng)程序明確說(shuō)明此SESSION失效的或者會(huì)話(huà)執(zhí)行超時(shí)的時(shí)候,這些對(duì)象才會(huì)自動(dòng)被釋放?! 『芏嗫雌饋?lái)象內(nèi)存泄漏的情況都是上面的那些會(huì)話(huà)中的泄漏。一個(gè)造成泄漏的會(huì)話(huà)并不是泄漏了內(nèi)存而是類(lèi)似于泄漏,它消耗了內(nèi)存,但最終這些內(nèi)存都會(huì)被釋放的。如果程序服務(wù)器發(fā)生內(nèi)存溢出,判斷是內(nèi)存泄漏還是內(nèi)存缺乏的最好的方法就是:停止所有向這個(gè)服務(wù)器所發(fā)的請(qǐng)求的對(duì)象,等待會(huì)話(huà)超時(shí),看內(nèi)存時(shí)候會(huì)被釋放出來(lái)。這雖然不會(huì)一定能夠達(dá)到你要的目的,但是這是最好的分段處理方法,當(dāng)你裝載測(cè)試器的時(shí)候,你應(yīng)該先掛斷你內(nèi)容巨大的會(huì)話(huà)而不是先去尋找內(nèi)存泄漏。  通常來(lái)說(shuō),如果你執(zhí)行了一個(gè)很大的會(huì)話(huà),你應(yīng)該盡量去減少它所占用的內(nèi)存空間,如果可以的話(huà)最好能重構(gòu)程序,以減少session所占據(jù)的內(nèi)存空間。下面2種方法可以降低大會(huì)話(huà)和內(nèi)存的沖突:  1. 增大堆的空間以支持你的大會(huì)話(huà)   2. 縮短會(huì)話(huà)的超時(shí)時(shí)間,讓它能夠快速的失效  一個(gè)巨大的堆會(huì)導(dǎo)致垃圾回收花費(fèi)更多的時(shí)間,因此這不是一個(gè)好解決方法,但總比發(fā)生OutofMemoryError強(qiáng)。增加足夠的堆空間以使它能夠存儲(chǔ)所有應(yīng)該保存的有效值,也意味著你必須有足夠的內(nèi)存去存儲(chǔ)所有訪(fǎng)問(wèn)你站點(diǎn)的用戶(hù)的有效會(huì)話(huà)。如果商業(yè)規(guī)則允許的話(huà)最好能縮短會(huì)話(huà)超時(shí)的時(shí)間,以減少堆占用空間的沖突??偨Y(jié)下,你應(yīng)該依據(jù)合理性和重要性按下面的步驟依次去執(zhí)行:  1. 重構(gòu)程序,盡量減少擁有session范圍的變量所存儲(chǔ)的信息量   2. 鼓勵(lì)你的客戶(hù)在他們使用完后,明確的釋放會(huì)話(huà)   3. 縮短超時(shí)的時(shí)間,以便于讓你內(nèi)存盡快的得到回收   4. 增加你堆空間的大小  無(wú)論如何,不要讓程序范圍級(jí)的變量,靜態(tài)變量,長(zhǎng)生命周期的類(lèi)存儲(chǔ)對(duì)象,事實(shí)上,你需要在內(nèi)存模擬器中去分析泄漏。  異常的持久空間  容易誤解JVM為持久空間分配內(nèi)存的目的。堆僅僅存儲(chǔ)類(lèi)的實(shí)例,但JVM在堆中創(chuàng)建類(lèi)實(shí)例之前,它必須把字節(jié)流文件(.class文件)裝載到程序內(nèi)存中。它利用內(nèi)存中的字節(jié)流在堆中創(chuàng)建類(lèi)的實(shí)例。JVM利用程序的內(nèi)存來(lái)裝載字節(jié)流文件,這個(gè)內(nèi)存空間稱(chēng)為持久空間。圖6顯示了持久空間和堆的關(guān)系:它存在于JVM程序中,并不是堆的一部分。Figure 6. The relationship between the permanent space and the heap  通常,你可能想讓你的持久空間足夠大以便于它能夠裝載你程序所有的類(lèi),因?yàn)楹苊黠@,從文件系統(tǒng)中讀取類(lèi)文件比從內(nèi)存中裝載代價(jià)高很多。JVM提供了一個(gè)參數(shù)讓你不的程序不卸載已經(jīng)裝載到持久空間中的類(lèi)文件:  –noclassgc  這個(gè)參數(shù)選項(xiàng)告訴JVM不要跑到持久空間去執(zhí)行垃圾收集釋放其中已經(jīng)裝載的類(lèi)文件。這個(gè)參數(shù)選項(xiàng)很聰明,但是會(huì)引起一個(gè)問(wèn)題:當(dāng)持久空間滿(mǎn)了以后依然需要裝載新文件的時(shí)候JVM會(huì)怎么處理呢?我觀(guān)測(cè)到的資料說(shuō)明:如果JVM檢測(cè)到持久空間還需要內(nèi)存,就會(huì)調(diào)用主垃圾收集程序。垃圾收集器清除堆,但它并不會(huì)對(duì)持久空間進(jìn)行任何操作,因此它的努力是白費(fèi)的。于是JVM就再重新檢測(cè)持久空間,看它是否滿(mǎn),然后再次執(zhí)行程序,一遍的一遍重復(fù)?!∥业谝淮闻龅竭@種問(wèn)題的時(shí)候,用戶(hù)抱怨說(shuō)程序性能很差勁,并且在運(yùn)行了幾次后就出現(xiàn)了問(wèn)題,可能是內(nèi)存溢出問(wèn)題。在我調(diào)查了詳細(xì)的關(guān)于堆和程序內(nèi)存利用的收集器的記錄后,我迅速發(fā)覺(jué)堆的狀態(tài)非常正常,但程序確發(fā)生了內(nèi)存溢出。這個(gè)用戶(hù)維持了數(shù)千的JSP頁(yè)面,在裝載到內(nèi)存前把他們都編譯成了字節(jié)流文件放入持久空間。他的環(huán)境已經(jīng)造成了持久空間溢出,但是在堆中由于用了 noclassgc 選項(xiàng),于是JVM并不去釋放類(lèi)文件來(lái)裝載新的類(lèi)文件。于是就導(dǎo)致了內(nèi)存溢出錯(cuò)誤,我把他的持久空間改為512M大小,并去掉了 noclassgc 參數(shù)?! ≌駡D7顯示的,當(dāng)持久空間變滿(mǎn)了的時(shí)候,就引發(fā)垃圾收集,清理了樂(lè)園和幸存者空間,但是并不釋放持久空間中的一點(diǎn)內(nèi)存。Figure 7. Garbage collection behavior when the permanent space bees full. Click on thumbnail to view fullsized image.  注意  當(dāng)設(shè)置持久空間大小時(shí)候,一般考慮128M,除非你的程序有很多的類(lèi)文件,這個(gè)時(shí)候,你就可以考慮使用256M大小。如果你想讓他能夠裝載所有的類(lèi)的時(shí)候,就會(huì)導(dǎo)致一個(gè)典型的結(jié)構(gòu)錯(cuò)誤。設(shè)置成512M就足夠了,它僅僅是暫時(shí)的時(shí)間的花費(fèi)。把持久空間設(shè)置成512M大小就象給一個(gè)腳痛的人吃止痛藥,雖然暫時(shí)緩解了痛,但是腳還是沒(méi)有好,依然需要醫(yī)生把痛治療好,否則只是把問(wèn)題延遲了而已?! 【€(xiàn)程池  外界同WEB或程序服務(wù)器連接的主要方法就是向他們發(fā)送請(qǐng)求,這些請(qǐng)求被放置到程序的執(zhí)行次序隊(duì)列中。和內(nèi)存最大的沖突就是程序服務(wù)器所設(shè)置的線(xiàn)程池的大小。線(xiàn)程池的大小就是程序可以同時(shí)處理的請(qǐng)求的數(shù)量。如果池太小,請(qǐng)求就需要在隊(duì)列中等待程序處理,如果太大,CPU就需要花費(fèi)太多的時(shí)間在這些眾多的線(xiàn)程之間來(lái)回的切換。  每個(gè)服務(wù)器都有一個(gè)SOCKET負(fù)責(zé)監(jiān)聽(tīng)。程序把接受到的請(qǐng)求放到待執(zhí)行隊(duì)列中,然后將這個(gè)請(qǐng)求從隊(duì)列移動(dòng)到線(xiàn)程中被程序處理。  圖8顯示了服務(wù)器的處理程序。Figure 8. 服務(wù)器處理請(qǐng)求的次序結(jié)構(gòu)線(xiàn)程池太小  每當(dāng)我碰到有人抱怨裝載速度的性能隨著裝載的數(shù)量的增加變的越來(lái)越糟糕的時(shí)候,我會(huì)首先檢查線(xiàn)程池。特別是,我在看到下面這些信息的時(shí)
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1