扫描下方海报
试读
本文来源:占小狼的博客
"狼哥,我发现新大陆了,等会发你代码"
"咋了,这么激动"
"等会..."
List<Integer> list0 = new ArrayList<Integer>();
long start0 = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
list0.add(i);
}
System.out.println(System.currentTimeMillis() - start0);
long start1 = System.currentTimeMillis();
List
<Integer> list1 = new ArrayList<Integer>();
for (int i = 10000000; i < 20000000; i++) {
list1.add(i);
}
System.out.println(System.currentTimeMillis() - start1);
"我在一个ArrayList中连续插入1千万条数据,结果耗时不一样,分别是
2346
797
没搞明白"
我看了一眼,就知道这小伙底盘不稳。
"你加个
-XX:+PrintGCDetails -XX:+PrintGCDateStamps
,看下第一次是不是有Full GC"
"明白,我再试试看"
几分钟后...
2019-09-28T09:49:07.519-0800: [GC (Allocation Failure) [PSYoungGen: 54888K->10738K(76288K)] 54888K->36180K(251392K), 0.0520111 secs] [Times: user=0.24 sys=
0.03, real=0.06 secs]
2019-09-28T09:49:07.590-0800: [GC (Allocation Failure) [PSYoungGen: 74092K->10736K(141824K)] 99534K->80803K(316928K), 0.0693607 secs] [Times: user=0.39 sys=0.03, real=0.06 secs]
2019-09-28T09:49:07.751-0800: [GC (Allocation Failure) [PSYoungGen: 141808K->10736K(141824K)] 211875K->188026K(320512K), 0.1829926 secs] [Times: user=1.02 sys=0.10, real=0.18 secs]
2019
-09-28T09:49:07.934-0800: [Full GC (Ergonomics) [PSYoungGen: 10736K->0K(141824K)] [ParOldGen: 177290K->171620K(402432K)] 188026K->171620K(544256K), [Metaspace: 3062K->3062K(1056768K)], 1.8672996 secs] [Times: user=5.96 sys=0.03, real=1.87 secs]
2365
2019-09-28T09:49:09.832-0800: [GC (Allocation Failure) [PSYoungGen: 129254K->10738K(196608K)] 300875K->282609K(599040K), 0.1039307 secs] [Times: user=0.74 sys=0.07, real=0.10 secs]
2019-09-28T09:49:09.936-0800: [Full GC (Ergonomics) [PSYoungGen: 10738K->0K(196608K)] [ParOldGen: 271871K->36047K(372736K)] 282609K->36047K(