使用大型SSJS阵列时发生ArrayIndexOutOfBoundsException

时间:2014-08-25 10:09:18

标签: arrays xpages xpages-ssjs

当我尝试对服务器端JavaScript(SSJS)中的前向和反向循环迭代之间的执行时间差异进行基准测试时,出现了一个(奇怪的)问题。虽然这个示例代码

var i,n=9999;
var arr=new Array(n);
for (i=0;i<n;i++) arr[i]=i; // WORKS
i=n; while (i--) arr[i]=i; // WORKS

工作正常,以下代码

var i,n=10000; // changed n from 9999 to 10000
var arr=new Array(n);
for (i=0;i<n;i++) arr[i]=i; // WORKS
i=n; while (i--) arr[i]=i; // THROWS ArrayIndexOutOfBoundsException

为反向迭代抛出 ArrayIndexOutOfBoundsException 。只要数组长度低于 10000 ,反向while循环才能正常工作。谁能告诉我这里发生了什么?

2 个答案:

答案 0 :(得分:1)

不是答案,但作为此类错误的解决方法,我建议使用java.util.ArrayList

var i,n=10000;

var arr=new java.util.ArrayList(n); //changed to ArrayList

for (i=0;i<n;i++) arr.add(i); // changed to .add(value)
i=n; while (i--) arr.set(i, i); // changed to .set(i, value)

答案 1 :(得分:0)

此问题的修复程序已提供给XPages Core Runtime,并将成为下一个XPages产品版本的一部分。感谢您引起我们的注意