开发者社区 问答 正文

JFinal的回收机制?报错

利用Jfinal操作数据库的时候一直报内存溢出错误,修改了虚拟机的大小,还是在报错,所以我想知道JFinal的数据库链接什么的一些资源是不是自动回收;

代码:

      public void configPlugin(Plugins me) {
        // 配置C3p0数据库连接池插件
        C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password").trim());
        me.add(c3p0Plugin);
        // 配置ActiveRecord插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
        me.add(arp);
        arp.addMapping("user", User.class);    // 映射user 表到 User模型
        arp.addMapping("car", Car.class);    // 映射car 表到 Car模型
    }

操作数据库的时候:

      String sql = "insert into user(name, age,car_num,tel) values(?,?,?,?)";
      int[] result = Db.batch(sql, "name, age,car_num,tel", recordList, 100000);




展开
收起
爱吃鱼的程序员 2020-06-14 17:00:01 379 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

       报内存溢出,可能是在短时间内反复多次加载了比较占内存的数据,JVM来不及回收就挂掉了。另一个可能是项目中存在内存泄漏的代码。

      JFinal数据库操作部分,每次操作完都会在finally代码块中立即关闭ResultSet、Statement、Connection这三对象,资源会立即释放,不会有内存泄漏。

    如果数据库操作有内存泄露,早就有Bug报出来了,,,根本不会等到现在

    我看过取DB连接的源码,也修改,源代码没有问题。。。

    2020-06-14 17:00:18
    赞同 展开评论