Java Oracle Jdbc并行连接终止

时间:2019-03-07 10:33:36

标签: java oracle jdbc

我创建了具有Oracle连接性的Java JDBC代码并创建了一个Jar文件。

现在我有一个要求,我需要并行运行同一Jar文件18次,但是当我触发所有Jars时,只有3或4个作业正在运行,而其他作业甚至在没有建立连接的情况下就被终止。我也尝试增加堆大小,但是没有用。可以帮我解决这个问题

我收到“空指针异常”,有时我收到“内存不足”异常。 我正在按如下方式运行我的jar文件“ java -jar -Xmx5g javaconnection.jar

import java.sql.*;  
class OracleCon{  
public static void main(String args[]){  
try{  
//step1 load the driver class  
Class.forName("oracle.jdbc.driver.OracleDriver");  

//step2 create  the connection object  
Connection con=DriverManager.getConnection(  
"jdbc:oracle:thin:@localhost:1521:xe","system","oracle");  

//step3 create the statement object  
Statement stmt=con.createStatement();  

//step4 execute query  
ResultSet rs=stmt.executeQuery("select * from emp");  
while(rs.next())  
System.out.println(rs.getInt(1)+"  "+rs.getString(2)+"  "+rs.getString(3));  

//step5 close the connection object  
con.close();  

}catch(Exception e){ System.out.println(e);}  

} 

1 个答案:

答案 0 :(得分:1)

此JVM选项:

  

Xmx5g

当JVM启动时,将从操作系统请求5 GB的连续内存块。如果您运行“ java -jar -Xmx5g javaconnection.jar” 18次,则系统所需的最小RAM量为5 GB x 18 = 90 GB RAM。您的系统可能没有那么多的内存,因此这就是堆快用完的原因。

您编写的该程序不需要5 GB的RAM。调低堆空间。

此外,您可能不想通过手动运行一个jar 18次来并行化它。效率低下。您应该考虑使用数据库连接池,例如c3p0。