Java Oracle Jdbc 并行连接终止

标签 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);}  

} 

最佳答案

这个 JVM 选项:

Xmx5g

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

您编写的这个程序不需要 5 GB RAM。减少堆空间。

此外,您可能不希望通过手动运行 jar 18 次来并行化此操作。那是低效的。您应该考虑使用数据库连接池,例如 c3p0。

关于Java Oracle Jdbc 并行连接终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55041638/

相关文章:

java - 使用 SAX 解析 XML 文件时如何保留注释和 XML 声明?

java - 2 个 Java 正则表达式来验证 google DFP 条目

java - 通过发送多个数据包通过线性回归计算带宽

sql - 返回PLSQL ORACLE时出错,无法正常工作

MULE(AnyPoint Studio) 中的 Oracle 数据源配置

mysql - 存储过程不运行

java - 在对话框中动态添加 View

sql - 如何使用 Oracle SQL 向 rank() 添加移动窗口

java - 从数据库中的不同表检索数据发送要执行的SQL代码,返回数据?

mysql - 尝试添加 MySQL/slick 后出现奇怪的 Play Framework 2.2 异常