美文网首页
【深入浅出-JVM】(9): 方法区

【深入浅出-JVM】(9): 方法区

作者: mousycoder | 来源:发表于2019-07-17 18:14 被阅读0次

概念

方法区是虚拟机规范定义的,是所有线程共享的内存区域,保存系统的类的信息。比如:类的字段、方法、常量池、构造函数的字节码内容、代码、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/

相关文章

  • 【深入浅出-JVM】(9): 方法区

    概念 方法区是虚拟机规范定义的,是所有线程共享的内存区域,保存系统的类的信息。比如:类的字段、方法、常量池、构造函...

  • JVM 详解 待续ing

    JVM内存区域 方法区常量池堆区栈区本地方法区程序计数器 JVM调优 类声明周期

  • JVM的内存结构及GC机制

    JVM内存管理 根据JVM规范,JVM把内存划分成了如下几个区域: 方法区(Method Area) 堆区(Hea...

  • JVM内存布局

    JVM虚拟机内存结构,以及它们的作用 线程私有:栈区,本地方法栈,pc指针线程共有:方法区,堆区 JAVA的JVM...

  • 第1篇 JVM相关

    JVM 堆、栈区、本地内存 JVM内存 线程共享区 JAVA堆 方法区,如果耗尽会抛出OOM异常Out of Me...

  • java面试jvm总结

    JVM→ JVM 内存结构运行时数据区:堆、栈、方法区、直接内存、运行时常量池、堆存放对象, 方法区他用于存储已被...

  • 关于JVM内存模型的理解。

    JVM内存划分 JVM内存划分为线程共享区和线程独占区两部分,线程共享区包括方法区(Method Area)和堆(...

  • Java大佬之学习历程(一)

    基础篇 JVM: ①JVM内存结构: 堆、栈、方法区、直接内存、堆和栈区别, ②JVM参数及...

  • 【JVM】答疑

    方法区和永久代什么区别?方法区是 JVM 的规范,而永久代则是 JVM 规范的一种实现。只有 HotSpot 才有...

  • JVM内存直观描述

    JVM内存简单描述 java的JVM内存可分为3个区:堆(heap),栈(stack)和方法区(method)。 ...

网友评论

      本文标题:【深入浅出-JVM】(9): 方法区

      本文链接:https://www.haomeiwen.com/subject/ucmclctx.html