【发布时间】:2013-11-29 22:30:32
【问题描述】:
在我们从 Vector 更改为 ArrayList 后,我们的应用程序仅在 windows 上的 JVM 1.6_33 上崩溃。 我们在多线程环境中工作。我怀疑发生崩溃是因为对 ArrayList 的访问不同步。 Java 错误日志指向读取和更改此 ArrayList 的方法: com.swt.lib.ConnectionPool.getConnection(I)Lcom/swt/lib/Connection;+10
如果我同步相应的方法,应用程序也不会崩溃。 该应用程序正在处理: - Linux 上的 JVM 1.6_33 或 1.7_25 - Windows 上的 JVM 1.7_25
它从 Vector 更改为 ArrayList 有一些原因,但我不记得了。所以我不想改回来。
由于我不确切知道问题发生在代码中的哪个位置,因此我无法发布确切的代码。我有一个 ConnectionPool,我怀疑问题出在此处:
public Connection getConnection(ArrayList<Connection> connectionPool){
Connection connection = connectionPool.get(0);
connectionPool.remove(0);
return connection;
}
public void free(Connection connection, ArrayList<Connection> connectionPool){
connectionPool.add(connection);
}
在我们使用 ArrayList 之前,我们使用了 Vector。如果是同步错误应该是有异常,没有JVM崩溃?
应用程序大约每 24 小时崩溃一次。
现在应用程序在 JVM 1.7_25 上运行。但我不相信它会一直这样。
有谁知道为什么它适用于 JVM 1.7_25 而不适用于 1.6_33?
我忘记发布错误名称:Exception_Access_Violation
我刚刚在 www.java.com 上看到了一条建议:http://www.java.com/en/download/help/exception_access.xml
不知道JVM的crash是不是跟上面提到的有关系还是同步错误...
感谢您的任何建议, 根
【问题讨论】:
-
能贴出相关代码吗?谢谢!
-
请显示异常的堆栈跟踪(或至少它的前几行)。
-
这是一个 Exception_Access_Violation。同步错误会导致 JVM 崩溃吗?感谢您的任何建议....
标签: java multithreading arraylist crash jvm