栈区 存 引用和基本类型,不能存对象,而堆区存对象。==是比较地址,equals()比较对象内容。 (1) String str1 = "abcd"的实现过程:首先栈区创建str引用,然后在String池(独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中 ...
分类:
其他好文 时间:
2020-06-05 12:54:28
阅读次数:
76
《Java虚拟机规范》将虚拟机的内存分为以下几个区域: 堆区:堆区是JVM中最大的一块内存区域,按照垃圾分代收集的角度划分,又可以分成年轻代和老年代,而年轻代内存又被分成三部分,Eden空间、From Survivor空间、To Survivor空间,默认情况下年轻代按照8:1:1的比例来分配; 方 ...
分类:
其他好文 时间:
2020-06-04 19:26:42
阅读次数:
68
一、二位数组是一个特殊的一维数组,特殊在这个一维数组中每个元素都是一维数组 相当于一维数组存储一维数组(遍历二维数组可以通过debug模式很直观的展示) 通过以下堆区分布证明: int[][] data = new int[2][3]; 二、语法: 数据类型[][]:第一个[]代表行,第二个[]代表 ...
分类:
编程语言 时间:
2020-06-02 18:35:52
阅读次数:
79
Js的GC机制 在 七种基本类型中的引用类型 的变量其占据内存空间大且大小不固定,在堆内存中实际存储对象,在栈内存中存储对象的指针,对于对象的访问是按引用访问的。在栈区中执行的变量等是通过值访问,当其作用域销毁后变量也就随之销毁,而使用引用访问的堆区变量,在一个作用域消失后还可能在外层作用域或者其他 ...
分类:
Web程序 时间:
2020-05-20 12:41:10
阅读次数:
76
一、定义 1、堆:FIFO队列优先,先进先出。jvm只有一个堆区被所有线程所共享!堆存放在二级缓存中,调用对象的速度相对慢一些,生命周期由虚拟机的垃圾回收机制定。 2、栈:FILO先进后出,暂存数据的地方。每个线程都包含一个栈区!栈存放在一级缓存中,存取速度较快,“栈是限定仅在表头进行插入和删除操作 ...
分类:
其他好文 时间:
2020-05-18 00:25:23
阅读次数:
89
话不多说,直接撸图: 1》Eden中通过可达性分析,存活下来的对象直接通过复制算法移动到From区域中,此时该对象的分代年龄加1: 2》当下一次虚拟机进行【Minor GC】时,会同时对【Eden】和【From】进行垃圾回收,如果搞对象还在使用中,则被移动到另一个【From】区,对象分代年龄再次加1 ...
分类:
其他好文 时间:
2020-05-17 13:12:00
阅读次数:
120
内存分区模型 C++程序在执行时,将内存大方向划分为 4个区域 代码区:存放函数体的二进制代码(0,1),由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 内存 ...
分类:
编程语言 时间:
2020-05-14 15:37:00
阅读次数:
61
1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构, ...
分类:
编程语言 时间:
2020-05-10 10:32:14
阅读次数:
53
案例描述:实现一个通用的数组类,要求如下: 1.可以对内置数据类型以及自定义数据类型的数据进行存储 2.将数组中的数据存储到堆区 3.构造函数中可以传入数组的容量 4.提供对应的拷贝构造函数以及operator=防止浅拷贝问题 5.提供尾插法和删除法对数组中的数据进行增加和删除 6.可以通过下标方式 ...
分类:
其他好文 时间:
2020-04-28 17:19:06
阅读次数:
71
一:了解block的前世今生 首先,我们也称block为代码块,他可以理解为一个方法。它是C语言的扩充功能,C语言不允许存在这样的匿名函数。我们也知道,OC的类对象(在堆区),其他像C/C++一般存在于栈区。所以,block的内存在栈区。如果我们使用block作为一个对象的属性,我们会使用关键字co ...
分类:
移动开发 时间:
2020-04-22 12:59:18
阅读次数:
60