请教一个关于Iterator的问题
我想问下,如果把对ArrayList的用iterator遍历改为for(int i=0;i <size; i ++),在量大的情况下,性能能有提升吗?
现在情况是这样的:
最近在优化cpu,发现在30秒左右的时候创建了150w个左右的iterator对象,
然后gc掉,
这是因为有很多对象的update里面会对自己持有的ArrayList进行迭代(这个操作目前看是不可避免的,暂时没有考虑减少操作次数),
都是用的iterator,方法完成后会造成很多iterator在内存里面等待被回收
看了下ArrayList的源码,iterator()方法都是直接new了一个对象出来,
都知道在Java里面new是比较耗资源的一种操作
那么,我考虑把iterator的迭代访问改为for循环访问,
可以避免创建这么多对象,但是for的话会不会比iterator迭代的效率低,
造成得不偿失?
或者能考虑的方案是自己写一个ArrayList然后做一个iterator对象池?
这样做很复杂而且会额外造成很多开销,对象池的维护什么的
另外我想请问一下30秒左右执行一次非Full GC这算正常吗?