【发布时间】:2018-06-26 00:49:16
【问题描述】:
我正在执行下面的程序并将值存储在内存对象中,但是 GC 无法清除对象内存导致内存不足异常
请帮助您的洞察力
package sampletest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
public class studentDB
{
public static List<Student> retrieve()
throws ParseException
{
List<Student> students = new ArrayList();
for (int i = 0; i < 100000; i++)
{
Student student = new Student();
student.setAge(new Integer(i));
student.setBirthDate(new SimpleDateFormat("ddMMyyyy").parse("01061986"));
student.setName("Student" + new String(new Integer(i).toString()));
students.add(student);
}
return students;
提前感谢
【问题讨论】:
-
"[...] 但 GC 无法清除对象内存 [...]" - 只要您持有对
List的引用并且不要从所说的List中删除元素,GC 为什么要清除对象?你如何使用返回的List? -
GC 无法清除正在使用的变量的内存。
-
这个问题有什么意义?你真的问“我创建了很多对象(无论出于何种原因)并返回它们以供以后使用,但我希望 GC 删除它们”。当您显然不关心这些对象时,创建这些对象有什么意义?
标签: java memory arraylist memory-leaks