zoukankan      html  css  js  c++  java
  • 方法区 永久代 元空间 常量池

    方法区:jvm标准

    永久代:hotspot实现 1.7

    元空间:hotspot实现 1.8

    首先,metaspace默认的最大值是整个机器的物理内存大小,所以metaspace不断扩张会导致java程序侵占系统可用内存,最终系统没有可用的内存;而永久区则有固定的默认大小,不会扩张到整个机器的可用内存。当分配的内存耗尽时,两者均会触发full gc,但不同的是永久区在full gc时,以堆内存回收时类似的机制去回收永久区中的类元数据(Class对象),只要是根引用无法到达的对象就可以回收掉,而metaspace判断类元数据是否可以回收,是根据加载这些类元数据的Classloader是否可以回收来判断的,只要Classloader不能回收,通过其加载的类元数据就不会被回收。

    原文链接:https://blog.csdn.net/xyghehehehe/article/details/78820135

    常量池

    1.6  - 永久代(方法区)

    1.7、1.8  - 堆

    但是即使是同样在堆中:

    public class StringConstancePool {
    public static void main(String[] args) {
    String str1 = new String("abc");
    String str2 = str1.intern();
    System.out.println(str1 == str2);
    }
    }
    以上程序的运行结果仍然是false,这时因为intern生成的str2所引用的字符串内容是在字符串常量池中,而通过new String方法生成的str1,该字符串对象是位于存放对象的Java堆中,二者的地址是不同的。

    原文链接:https://blog.csdn.net/MustangJy/article/details/88044964

  • 相关阅读:
    多尺度目标检测 Multiscale Object Detection
    转置卷积Transposed Convolution
    Fine-Tuning微调原理
    eclipse中alt+/失效的几种解决方法
    错误笔记 对象为null时调用改对象的方法会报错
    JAVA -数据类型与表达式---变量与赋值
    错误笔记 3 变量值未初始化
    JAVA BigDecimal 用法
    JDBC url连接字符串错误1
    JDBC连接最新版Mysql数据库url设置
  • 原文地址:https://www.cnblogs.com/silyvin/p/11543669.html
Copyright © 2011-2022 走看看