1. 程式人生 > >識別方法區

識別方法區

與java堆相同,方法區是一塊所有執行緒共享的記憶體區域,用於儲存類資訊,如類的欄位,方法,常量池等,方法區的大小決定了系統可以儲存多少個類,系統定義了太多的類,導致方法區溢位,虛擬機器會丟擲記憶體溢位錯誤。

在JDK1.6和1.7中,方法區可以理解為永久區,永久區可以使用-XX:PermSize和-XX:MaxPermSize指定,預設情況下-XX:MaxPermSize為64M。系統如果使用一些動態代理,那麼可能會生成大量的類。

在JDK1.8中,永久區已經被徹底刪除。取而代之的是元資料區,元資料區大小可以使用引數 -XX:MaxMetaspaceSize指定,這是一塊堆外的直接記憶體,與永久區不同,如果不指定大小,預設情況下,虛擬機器會耗盡所有的可用系統記憶體。