成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java8新特性之再見Permgen_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理-創(chuàng)新互聯(lián)

很多開發(fā)者都在其系統(tǒng)中見過(guò)“java.lang.OutOfMemoryError: PermGen space”這一問題。這往往是由類加載器相關(guān)的內(nèi)存泄漏以及新類加載器的創(chuàng)建導(dǎo)致的,通常出現(xiàn)于代碼熱部署時(shí)。相對(duì)于正式產(chǎn)品,該問題在開發(fā)機(jī)上出現(xiàn)的頻率更高,在產(chǎn)品中最常見的“問題”是默認(rèn)值太低了。常用的解決方法是將其設(shè)置為256MB或更高。

創(chuàng)新互聯(lián)公司專注于湄潭企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。湄潭網(wǎng)站建設(shè)公司,為湄潭等地區(qū)提供建站服務(wù)。全流程定制設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

PermGen space簡(jiǎn)單介紹

PermGen space的全稱是Permanent Generation space,是指內(nèi)存的永久保存區(qū)域,說(shuō)說(shuō)為什么會(huì)內(nèi)存益出:這一部分用于存放Class和Meta的信息,Class在被 Load的時(shí)候被放入PermGen space區(qū)域,它和和存放Instance的Heap區(qū)域不同,所以如果你的APP會(huì)LOAD很多CLASS的話,就很可能出現(xiàn)PermGen space錯(cuò)誤。這種錯(cuò)誤常見在web服務(wù)器對(duì)JSP進(jìn)行pre compile的時(shí)候。

JVM 種類有很多,比如 Oralce-Sun Hotspot, Oralce JRockit, IBM J9, Taobao JVM(淘寶好樣的!)等等。當(dāng)然武林盟主是Hotspot了,這個(gè)毫無(wú)爭(zhēng)議。需要注意的是,PermGen space是Oracle-Sun Hotspot才有,JRockit以及J9是沒有這個(gè)區(qū)域。

元空間(MetaSpace)一種新的內(nèi)存空間誕生

JDK8 HotSpot JVM 將移除永久區(qū),使用本地內(nèi)存來(lái)存儲(chǔ)類元數(shù)據(jù)信息并稱之為:元空間(Metaspace);這與Oracle JRockit 和IBM JVM's很相似,如下圖所示

這意味著不會(huì)再有java.lang.OutOfMemoryError: PermGen問題,也不再需要你進(jìn)行調(diào)優(yōu)及監(jiān)控內(nèi)存空間的使用……但請(qǐng)等等,這么說(shuō)還為時(shí)過(guò)早。在默認(rèn)情況下,這些改變是透明的,接下來(lái)我們的展示將使你知道仍然要關(guān)注類元數(shù)據(jù)內(nèi)存的占用。請(qǐng)一定要牢記,這個(gè)新特性也不能神奇地消除類和類加載器導(dǎo)致的內(nèi)存泄漏。

java8中metaspace總結(jié)如下:

PermGen 空間的狀況

這部分內(nèi)存空間將全部移除。

JVM的參數(shù):PermSize 和 MaxPermSize 會(huì)被忽略并給出警告(如果在啟用時(shí)設(shè)置了這兩個(gè)參數(shù))。

Metaspace 內(nèi)存分配模型

大部分類元數(shù)據(jù)都在本地內(nèi)存中分配。

用于描述類元數(shù)據(jù)的“klasses”已經(jīng)被移除。

Metaspace 容量

默認(rèn)情況下,類元數(shù)據(jù)只受可用的本地內(nèi)存限制(容量取決于是32位或是64位操作系統(tǒng)的可用虛擬內(nèi)存大?。?/p>

新參數(shù)(MaxMetaspaceSize)用于限制本地內(nèi)存分配給類元數(shù)據(jù)的大小。如果沒有指定這個(gè)參數(shù),元空間會(huì)在運(yùn)行時(shí)根據(jù)需要?jiǎng)討B(tài)調(diào)整。

Metaspace 垃圾回收

對(duì)于僵死的類及類加載器的垃圾回收將在元數(shù)據(jù)使用達(dá)到“MaxMetaspaceSize”參數(shù)的設(shè)定值時(shí)進(jìn)行。

適時(shí)地監(jiān)控和調(diào)整元空間對(duì)于減小垃圾回收頻率和減少延時(shí)是很有必要的。持續(xù)的元空間垃圾回收說(shuō)明,可能存在類、類加載器導(dǎo)致的內(nèi)存泄漏或是大小設(shè)置不合適。

Java 堆內(nèi)存的影響

一些雜項(xiàng)數(shù)據(jù)已經(jīng)移到Java堆空間中。升級(jí)到JDK8之后,會(huì)發(fā)現(xiàn)Java堆 空間有所增長(zhǎng)。

Metaspace 監(jiān)控

元空間的使用情況可以從HotSpot1.8的詳細(xì)GC日志輸出中得到。

Jstat 和 JVisualVM兩個(gè)工具,在使用b75版本進(jìn)行測(cè)試時(shí),已經(jīng)更新了,但是還是能看到老的PermGen空間的出現(xiàn)。

前面已經(jīng)從理論上充分說(shuō)明,下面讓我們通過(guò)“泄漏”程序進(jìn)行新內(nèi)存空間的觀察……

PermGen vs. Metaspace 運(yùn)行時(shí)比較

    為了更好地理解Metaspace內(nèi)存空間的運(yùn)行時(shí)行為,

    將進(jìn)行以下幾種場(chǎng)景的測(cè)試:

1.使用JDK1.7運(yùn)行Java程序,監(jiān)控并耗盡默認(rèn)設(shè)定的85MB大小的PermGen內(nèi)存空間。

2.使用JDK1.8運(yùn)行Java程序,監(jiān)控新Metaspace內(nèi)存空間的動(dòng)態(tài)增長(zhǎng)和垃圾回收過(guò)程。

3.使用JDK1.8運(yùn)行Java程序,模擬耗盡通過(guò)“MaxMetaspaceSize”參數(shù)設(shè)定的128MB大小的Metaspace內(nèi)存空間。

首先建立了一個(gè)模擬PermGen OOM的代碼

public class ClassA {
 public void method(String name) {
 // do nothing
 }
}

網(wǎng)站欄目:Java8新特性之再見Permgen_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理-創(chuàng)新互聯(lián)
路徑分享:http://jinyejixie.com/article38/jsspp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)小程序開發(fā)、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化、建站公司、關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
洛扎县| 凤凰县| 赤水市| 中江县| 海林市| 龙门县| 祥云县| 额敏县| 东乡| 新晃| 游戏| 绥阳县| 雷山县| 郧西县| 郧西县| 北票市| 青铜峡市| 共和县| 通城县| 乐东| 察雅县| 枣阳市| 堆龙德庆县| 石棉县| 凤阳县| 剑川县| 孙吴县| 安仁县| 台东市| 漳平市| 来宾市| 新竹县| 汾阳市| 溧水县| 太谷县| 瑞安市| 来安县| 齐河县| 清远市| 大余县| 金华市|