【问题标题】:java.util.ArrayList throwing IndexOutOfBounds exceptionjava.util.ArrayList 抛出 IndexOutOfBounds 异常
【发布时间】:2014-05-10 03:59:20
【问题描述】:

我今天发现了以下痕迹:

java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
    at java.util.ArrayList.rangeCheck(ArrayList.java:635)
    at java.util.ArrayList.get(ArrayList.java:411)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1720)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    at [.. somewhere in my code]

那段时间系统非常繁忙,我猜想内存也很紧张,而且我还遇到了一些堆耗尽错误 (java.lang.OutOfMemoryError: Java heap space)。由于上述跟踪来自系统 / PostgreSQL / Apache 库的胆量,内存非常低的系统可能会触发它吗?

在我的代码中看起来不是问题,或者跟踪不会那么深,对吧?

【问题讨论】:

  • 什么是somewhere in my code?您的假设不正确,这几乎可以肯定是您的代码存在问题。
  • 您很可能以某种方式滥用了 SQL 查询机制,可能是在您完成查询后没有关闭打开的查询。

标签: java heap-memory heap-corruption


【解决方案1】:

ArrayLists 使用从零开始的索引,索引 2 在长度为 2 的列表中无效(在您的跟踪中给出的信息)。这可能是您的代码中的一个问题,它在触发异常之前一直通过查询引擎传递。

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多