我正在测试一个监视应用程序运行状况的应用程序,而决定因素之一是jvm内存。我很好奇如何吃完才能达到测试的门槛?这行得通吗?
ArrayList<Object> list = new ArrayList<Object>();
while(true){
list.add(new Object());
}
类似于在我不断分配事物的C中仔细检查应用程序内存吗?还是垃圾收集器会来帮我清理所有这些?还是我完全错过了标记?
答案 0 :(得分:1)
不,您没有错过分数。垃圾收集器将仅收集您不再引用的对象。在您的示例代码中,列表以及它引用的所有对象始终在范围内,因此您最终将填满堆并生成OutOfMemoryException。
正如评论中所述,根据堆的大小,使用纯对象可能不是最好的方法。较大的对象或简单的基元数组将使您的生活更轻松。