zoukankan      html  css  js  c++  java
  • 方法区概述

    首先先来说说 方法区 的作用。

    方法区

    方法区,是用来存放有关 类、方法 信息的一块逻辑上的区域。也就说,人们想规划出一块区域,用来存储类 方法 相关信息。

    除此之外,还用来存储常量、静态变量,以及一些代码缓存等数据。

    想想,这些数据都有什么特点。

    几乎不变;不怎么依赖于对象,独立。

    方法区的故事

    关于方法区,有很多的故事 和 混乱。方法区、永久代、元空间都跟他有着故事。

    故事的缘由是由历史和部分概念不清晰导致的。

    我们之前说到,方法区 只是一个逻辑上的概念。

    具体的实现,叫做 永久代 和 元空间。

    永久代是 JDK 8 之前的实现。

    元空间是 JDK 8 及其之后的实现。

    方法区 只是 逻辑上的功能区域概念,永久代 和 元空间 才是在 JVM 中具体的实现。

    永久代

    永久代,是 JDK 8 之前的实现。永久代,顾名思义,永久存在的,也就是说不怎么需要进行 垃圾回收。

    从我们之前对 方法区 的特点,可以知道,方法区内的数据,的确应该长久存在。

    但是,当初在设计的时候,永久代存在一个问题。

    可以看到,之前的 永久代 受到限定的内存大小限制,很容易发生内存溢出。

    通常使用PermSize和MaxPermSize设置永久代的大小就决定了永久代的上限,但是不是总能知道应该设置为多大合适, 如果使用默认值很容易遇到OOM错误。

    元空间

    在 JDK8 之后,取消了 永久代,改为 元空间。元空间 位于本地内存,也就是说 只要系统内存足够大,就不会发生溢出。

    当使用元空间时,可以加载多少类的元数据就不再由MaxPermSize控制, 而由系统的实际可用空间来控制。

  • 相关阅读:
    #include <NOIP2009 Junior> 细胞分裂 ——using namespace wxl;
    【NOIP合并果子】uva 10954 add all【贪心】——yhx
    NOIP2010普及组T4 三国游戏——S.B.S.
    NOIP2010普及组T3 接水问题 ——S.B.S.
    NOIP2011提高组 聪明的质监员 -SilverN
    NOIP2010提高组 关押罪犯 -SilverN
    uva 1471 defence lines——yhx
    json2的基本用法
    获取对象的属性个数
    替换指定规则的字符串
  • 原文地址:https://www.cnblogs.com/zhouzhiyao/p/13186253.html
Copyright © 2011-2022 走看看