listA.add(new String("arraylist"));

我创建了一个对象listA,并向listA中添加了100个元素,大家知道ArrayList的底层是数组,在创建listA之后,调用add方法之前,listA中存储数据的数组(Object[] elementData)默认是为空的elementData=null,在调用add方法之后才会初始化这个数组,并且默认长度为10(元素个数超过数组长度之后会重新创建一个数组,并将原数据复制到新数组,数组扩展系数为原来的1.5倍)。那么在调用add方法添加元素之后listA内存占用有如下两个:

1、系统为listA中数组elementData分配的内存;

2、向listA中添加元素占用的内存;

在ArrayList中底层数组是Object类型,数组中存储的并不是

最近在看ArrayList源码的时候看到了ArrayList的clear方法,源码如下:public void clear() {modCount++;// clear to let GC do its workfor (int i = 0; i < size; i++)elementData[i] = null;size = 0;}在看到这段代码的时候联想到内存释放的问题如下代码:List... delphi的 clear 内存 是不 释放 的 因为我的程序在调用的很多 过程冲不断的 clear , 数据 要不断的更新 clear 的都是 tstring list ,还有很多的结构体泛型的 list ,里面有string类型的,查看 内存 的时候 发现里面的 内存 一直不停的增长。问题是这样的 1 对于 tst list . Clear ();只是清空了内容 在 内存 上它还是占有空间,而=null 就是不占用 内存 空间 大佬看法:=null还没有立刻把 内存 清掉,要调用GC.Collect();才会清掉 内存 Clear 方法 和=null差不多,也不会马上...
ArrayList Java 的一种动态数组,可以用于存储多个元素。如果要删除 ArrayList 的指定学生,可以使用remove() 方法 。该 方法 接受一个对象作为参数,并在列表 删除第一个匹配项。 例如,如果要从 ArrayList 删除名为"Tom"的学生,可以使用以下代码: ``` java ArrayList <Student> students = new ArrayList <Student>(); // Add some students to the list students.remove(new Student("Tom")); 请注意,上面的代码假设Student类具有重写equals() 方法 ,并且能够根据名称进行比较。 如果要删除所有学生,可以使用 clear () 方法 : ``` java students. clear (); 也可以使用迭代器遍历列表并删除,如下 ``` java Iterator<Student> it = students.iterator(); while(it.hasNext()){ Student student = it.next(); if(student.getName().equals("Tom")){ it.remove();