摘要:概念方法區是虛擬機規范定義的,是所有線程共享的內存區域,保存系統的類的信息。比如類的字段方法常量池構造函數的字節碼內容代碼代碼永久代是對方法區的實現。
概念
方法區是虛擬機規范定義的,是所有線程共享的內存區域,保存系統的類的信息。比如:類的字段、方法、常量池、構造函數的字節碼內容、代碼、JIT 代碼
永久代、metaspace 是對方法區的實現。
Hotspot 實行分代管理內存(新生代、老年代、永久代)
jdk8 實現方法區用 metaspace 堆外內存
方法區溢出虛擬機參數:
jdk1.7
-XX:PermSize=5M -XX:MaxPermSize=10M
jdk1.8
-XX:MaxMetaspaceSize=150M
代碼
package com.mousycoder.mycode.thinking_in_jvm; import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method; /** * 方法區溢出 * * @version 1.0 * @author: mousycoder * @date: 2019-06-22 15:44 */ public class PermgenOOM { public static void main(String[] args) throws InterruptedException { int i = 0; while (true) { Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(User.class); enhancer.setUseCache(false); enhancer.setCallback(new MethodInterceptor() { @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { return methodProxy.invokeSuper(o,objects); } }); enhancer.create(); Thread.sleep(1000); } } } class User { private long id; private String name; }
jdk1.7
jdk1.8
感謝您的耐心閱讀,如果您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,您的鼓勵是作者寫作最大的動力。
作 者 : @mousycoder
原文出處 : http://mousycoder.com/thinking-in-jvm/9/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75434.html
摘要:一內存區域虛擬機在運行時,會把內存空間分為若干個區域,根據虛擬機規范版的規定,虛擬機所管理的內存區域分為如下部分方法區堆內存虛擬機棧本地方法棧程序計數器。前言 在JVM的管控下,Java程序員不再需要管理內存的分配與釋放,這和在C和C++的世界是完全不一樣的。所以,在JVM的幫助下,Java程序員很少會關注內存泄露和內存溢出的問題。但是,一旦JVM發生這些情況的時候,如果你不清楚JVM內存的...
摘要:虛擬機性能監控與故障處理工具詳解概述本文參考的是周志明的深入理解虛擬機第四章,為了整理思路,簡單記錄一下,方便后期查閱。虛擬機堆轉儲快照分析工具功能用于分析生成的。 虛擬機性能監控與故障處理工具 詳解 4.1 概述 本文參考的是周志明的 《深入理解Java虛擬機》 第四章 ,為了整理思路,簡單記錄一下,方便后期查閱。 JDK本身提供了很多方便的JVM性能調優監控工具,除了集成式的Vis...
摘要:運行時數據區域的學習,是學習以及機制的基礎,也是深入理解對象創建及運行過程的前提。了解內存區域劃分,是學習概念的前提。 Java 運行時數據區域的學習,是學習 jvm 以及 GC 機制的基礎,也是深入理解 java 對象創建及運行過程的前提。廢話不多說,直接進入正題: 一張圖總結 showImg(https://segmentfault.com/img/bVOMAn?w=685&h=5...
摘要:堆內存的劃分在里面的示意圖垃圾回收一判斷對象是否要回收的方法可達性分析法可達性分析法通過一系列對象作為起點進行搜索,如果在和一個對象之間沒有可達路徑,則稱該對象是不可達的。 工作之余,想總結一下JVM相關知識。 Java運行時數據區: Java虛擬機在執行Java程序的過程中會將其管理的內存劃分為若干個不同的數據區域,這些區域有各自的用途、創建和銷毀的時間,有些區域隨虛擬機進程的啟動而...
摘要:而字節碼運行在之上,所以不用關心字節碼是在哪個操作系統編譯的,只要符合規范,那么,這個字節碼文件就是可運行的。好處防止內存中出現多份同樣的字節碼安全性角度特別說明類加載器在成功加載某個類之后,會把得到的類的實例緩存起來。 前言 只有光頭才能變強 JVM在準備面試的時候就有看了,一直沒時間寫筆記。現在到了一家公司實習,閑的時候就寫寫,刷刷JVM博客,刷刷電子書。 學習JVM的目的也很簡單...
閱讀 1123·2021-11-24 09:39
閱讀 3623·2021-09-02 15:21
閱讀 2161·2021-08-24 10:01
閱讀 722·2021-08-19 10:55
閱讀 2447·2019-08-30 15:55
閱讀 1212·2019-08-30 14:16
閱讀 2992·2019-08-29 15:17
閱讀 3235·2019-08-29 13:53