JDBC连接数据库内存溢出问题

我用JDBC连接Access数据库时,执行到DriverManager.getConnection时就会报错:java.lang.OutOfMemoryError: GC overhead limit exc

 public static Connection getConnection(String file){
        Connection con=null;
        String url="jdbc:ucanaccess://"+file;
        try {
            Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
            con=DriverManager.getConnection(url);//此处报错
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        System.out.println("getConnection结束");
        return con;
    }

如果是小的Access文件不会报错,试了个1.2G的就会出现这种情况

你的可用内存有多少啊

电脑8G内存,64位

这个和电脑的可用内存没有关系,影响你接收文件流大小的瓶颈在于jvm的最大内存设置。你的电脑8g内存,jvm只用一部分哦~
可以通过调整jvm内存来获得较好的性能。如果使用tomcat容器可以通过catalina.sh里面设置,如果用IDE,可以直接用图形化界面设置。可以参考https://blog.csdn.net/shabijiayong/article/details/79097636

GC overhead limit exceeded是Hotspot VM 1.6定义的一个策略,通过统计GC时间来预测是否要OOM了,提前抛出异常,防止OOM发生。
解决方案就是调整jvm的最大堆内存,使用参数-Xmx来调整最大堆内存,如-Xmx1024m设置的是1G堆内存。

https://blog.csdn.net/shabijiayong/article/details/79097636去参考参考

设置jvm的对内存大小,这是虚拟机内存的限制