我想问为什么执行“NAME.add("Tom");
”时触发Java堆空间?JAVA while循环arralyist问题
<%@ page import="java.util.*" %>
<%
try {
ArrayList <String> NAME = new ArrayList<String>();
int count= 0;
do
{
NAME.add("Tom");
} while (count < 2);
String[] name = NAME.toArray(new String[NAME.size()]);
%>
<script type="text/javascript">
var output=[];
<%int i = 0;%>
<%while (i < name.length) { System.out.println(name[i]);%>
output[<%=i%>] = [];
output[<%=i%>][0] = '<%=name[i]%>';
<% System.out.println("No exception in JAVASCRIPT.");i++;}%>
</script>
<%
} catch (Exception error){System.out.println(error);}%>
该列表实际上不会包含`“Tom”`的副本,只有很多很多的对同一个“Tom”对象的引用。尽管如此,每个引用都需要4(或8)个字节,并且它们最终将填充堆。 – 2011-02-19 14:15:48