Skip to content

jvm架构

*除了程序计数器,都设置有OutOfMemoryError异常
程序计数器
    线程方法的指令地址或者null(Native 方法)
虚拟机栈
    栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息
    存基本数据类型和对象的引用
本地方法栈
     HotSpot 虚拟机中和 Java 虚拟机栈合二为一
堆
    新生代  1
        *好处: 高效的yound gc,减少full gc;减少内存碎片的产生;
        eden    8
        from survivor   1
        to survivor 1
    老年代  2
        *大对象
元空间
    类信息、常量、静态变量
运行时常量池
    用于存放编译期生成的各种字面量和符号引用
    运行期也可动态放入
直接内存
    堆外内存

关于new String("abc")

    在堆中创建了一个"abc"的String对象,并将其引用保存到字符串常量池中,然后返回

引用

    强引用
    软引用  SoftReference    内存溢出前
    弱引用  WeakReference   下一次GC
    虚引用  PhantomReference(搭配ReferenceQueue使用)    下一次gc        可以用虚引用来管理堆外内存