美文网首页
堆栈堆区

堆栈堆区

作者: 菁华浮英梦 | 来源:发表于2018-07-18 23:36 被阅读250次

这是一个关于java的垃圾回收机制的题目。垃圾回收主要针对的是堆区的回收,因为栈区的内存是随着线程而释放的。堆区分为三个区:年轻代(Young Generation)、年老代(Old Generation)、永久代(Permanent Generation,也就是方法区)。

 年轻代:对象被创建时(new)的对象通常被放在Young(除了一些占据内存比较大的对象),经过一定的Minor GC(针对年轻代的内存回收)还活着的对象会被移动到年老代(一些具体的移动细节省略)。

年老代:就是上述年轻代移动过来的和一些比较大的对象。Minor GC(FullGC)是针对年老代的回收

永久代:存储的是final常量,static变量,常量池。

str3,str4都是直接new的对象,而substring的源代码其实也是new一个string对象返回,如下图:

经过fullgc之后,年老区的内存回收,则年轻区的占了15个,不算PermGen。

相关文章

  • 堆栈堆区

    这是一个关于java的垃圾回收机制的题目。垃圾回收主要针对的是堆区的回收,因为栈区的内存是随着线程而释放的。堆区分...

  • 堆栈、堆、静态存储区

    一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的...

  • iOS内存分配五大区:

    iOS内存分配五大区: 栈区,堆区,静态区(全局区),常量区,代码区 动态数据区一般就是”堆栈”,栈是线性结构,堆...

  • 内存介绍

    虚拟内存总体分五大区域,栈区(堆栈),堆区(托管堆),常量,静态(静态未初始化区,和静态初始化区)其他区域**栈区...

  • C# 内存分配和参数传递及面向对象之封装,继承

    虚拟内存总体划分为五大区域:栈区(堆栈),堆区(托管堆),常量,静态(静态初始化,静态未初始化),代码区 * 栈...

  • Java堆栈方法区

    JAVA 堆栈 堆 方法区 解析[https://www.cnblogs.com/eason-chan/p/364...

  • Swift 中的内存分配情况与优化思路

    Allocation 内存分配 内存分配可以分为堆区栈区,在栈的内存分配速度要高于堆,结构体和类在堆栈分配是不同的...

  • java 堆栈

    参考文章:1.JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解2.java里的静态成员...

  • jvm(2)-堆、栈、方法区

    一、联系 堆解决数据存储。栈解决程序运行,如何处理数据。方法区是辅助堆栈的快永久区(类信息、静态信息都存放于方法区...

  • 堆与栈

    请你解释一下,内存中的栈(stack)、堆(heap) 和静态区(static area) 的用法。 考察点:堆栈...

网友评论

      本文标题:堆栈堆区

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