日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM:永久代 以及jdk1.8为什么将其移除?

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM:永久代 以及jdk1.8为什么将其移除? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

永久代

在JDK8之前的HotSpot實現中,類的元數據如方法數據、方法信息(字節碼,棧和變量大小)、運行時常量池、已確定的符號引用和虛方法表等被保存在永久代中,32位默認永久代的大小為64M,64位默認為85M,可以通過參數-XX:MaxPermSize進行設置,一旦類的元數據超過了永久代大小,就會拋出OOM異常。

虛擬機團隊在JDK8的HotSpot中,把永久代從Java堆中移除了,并把類的元數據直接保存在本地內存區域(堆外內存),稱之為元空間。


把永久代從Java堆中移除了,并把類的元數據直接保存在本地內存區域(堆外內存)。這樣做有什么好處?


有經驗的同學會發現,對永久代的調優過程非常困難,永久代的大小很難確定,其中涉及到太多因素,如類的總數、常量池大小和方法數量等,而且永久代的數據可能會隨著每一次Full GC而發生移動。

而在JDK8中,類的元數據保存在本地內存中元空間的最大可分配空間就是系統可用內存空間可以避免永久代的內存溢出問題,不過需要監控內存的消耗情況,一旦發生內存泄漏,會占用大量的本地內存。

ps:JDK7之前的HotSpot,字符串常量池的字符串被存儲在永久代中,因此可能導致一系列的性能問題和內存溢出錯誤。在JDK8中,字符串常量池中只保存字符串的引用。詳情參見本博客JVM模塊這篇文章

總結

以上是生活随笔為你收集整理的JVM:永久代 以及jdk1.8为什么将其移除?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。