-2
public class setExample {
public static void main(String[] args) throws IOException {
HashSet<String> hs = new HashSet<String>();
HashSet<String> hs1 = new HashSet<String>();
int i;
long startTime = 0,midTime = 0;
long endTime = 0, difference, diff;
startTime = System.nanoTime();
for(i = 0; i < 10000000 ; i++)
{
hs.add(i+"");
}
ArrayList<String> arraylist = new ArrayList<String>(hs);
Collections.sort(arraylist);
endTime = System.nanoTime();
difference = endTime - startTime;
System.out.println("Time taken for sorted values in hashset is " +difference);
midTime = System.nanoTime();
for(i = 0; i < 10000000 ; i++)
{
hs1.add((int)(Math.random()*100000000)+"");
}
ArrayList<String> arraylist1 = new ArrayList<String>(hs1);
Collections.sort(arraylist);
long endTime1 = System.nanoTime();
long difference1 = endTime1 - midTime;
System.out.println("Time taken for random values in hashset is " +difference1);
}}
當運行上述代碼我得到以下輸出。爲什麼生成的隨機字符串有問題?
輸出:
Time taken for sorted values in hashset is 14334316768
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.lang.Integer.toString(Integer.java:308)
at java.lang.Integer.toString(Integer.java:118)
at java.lang.String.valueOf(String.java:2931)
at learn.setExample.main(setExample.java:43)
這就是10000000 ... –
使用-Xmx java參數增加你的堆。像'-Xmx512m' – bedrin
您的JVM內存不足。你可以限制你的內部計數最小化還是增加你的堆大小? –