This code worked a couple of weeks ago, and works fine if there are fewer items in the database. The resulting error I am facing is: java.lang.OutOfMemoryError: GC overhead limit exceeded

这里没什么好奇怪的.由em.find()加载的实体被放置并保存在持久化上下文(在内存中)以跟踪更改,因此如果您在没有预防措施的情况下批量加载过多的实体,那么您将只是爆炸内存并获得OOME.

如果您确实需要对所有实体执行某些操作,则需要先调用flush()将所有更改推送到数据库,然后清除()以清除持久上下文并定期释放内存:

int i = 0;

for (Object id: someReallyBigIdList) {

myEntity = find(id);

// do something basic with myEntity

if ( i % 20 == 0 ) { //20, same as the JDBC batch size

//flush a batch of DML operations and release memory:

em.flush();

em.clear();

}

i++;

}

调用clear()会导致所有托管实体分离.对未刷新到数据库的实体所做的更改将不会保留.因此需要首先刷新()更改.

java创建实体 内存_加载Java实体时内存不足相关推荐

  1. flash cs4 java运行时_加载外部数据时Flash CS4 IDE内部缓存

    它们存储在您的系统's 1166699 cache (i.e. I.E.'缓存中 . 我有Firefox作为我的默认浏览器,但它们仍然存储在" AppData\Local\Microsoft ...

  2. java创建临时文件夹_如何在Java中创建一个临时目录/文件夹?

    有没有在Java应用程序内部创建临时目录的标准可靠方法? Java的问题数据库中有一个条目,注释中包含一些代码,但是我想知道在一个常用的库(Apache Commons等)中是否找到标准解决方案? # ...

  3. java的方法什么时候加载,java – JVM什么时候加载类?

    只有当您需要有关该类的信息时,才会加载类. public class SomethingCaller { public static Something something = null; // (1 ...

  4. [转]Android有效解决加载大图片时内存溢出的问题

    http://hi.baidu.com/%D6%C7%B4%EF%B8%DF%D4%B6lee/blog/item/7bd659af3f40dc1d4b36d68d.html 尽量不要使用setIma ...

  5. android 动画 图片 内存溢出,Android有效解决加载大图片时内存溢出的问题

    尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图, 因为这些函数在完成decode后,最终都是通过ja ...

  6. java使用哪个类,怎么知道 java类从哪个jar 加载

    如何知道 java类从哪个jar 加载 Java的类装载器使用的是优先策略,类加载器加载类的时候先找到哪个就加载哪个 从JSP页面就行测试 JBuilder Generated JSP if(claN ...

  7. java final 垃圾回收_新的Java垃圾回收机制ZGC 简介

    垃圾回收是Java的一项重要机制,是二月份的一项学习计划之一. ZGC是一种较新的垃圾回收机制,在JDK11中实验性引入,看了R大的几篇文章,依然不懂,之后发现了一篇介绍地比较易懂的文章: 希望对你有 ...

  8. java加载并运行虚拟机_《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?...

    Java虚拟机是如何加载Java类的?  这个问题也就是面试常问到的Java类加载机制.在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样. ...

  9. Java 类中各成分加载顺序和内存中的存放位置

    一.什么时候会加载类? 使用到类中的内容时加载:有三种情况 1.创建对象:new StaticCode(); 2.使用类中的静态成员:StaticCode.num=9; StaticCode.show ...

  10. java 根据类名示例化类_如何使用示例从Java中的类路径加载资源

    java 根据类名示例化类 Java中的类路径不仅用于加载.class文件,而且还可以用于加载资源,例如属性文件,图像,图标,缩略图或任何二进制内容. Java提供了API来将这些资源读取为Input ...

最新文章

  1. RabbitMQ探索:结构分析与常用方法解释
  2. 简单回声服务器的实现
  3. 一种网络进程间通信的方式—— 管道
  4. html 手动添加thead,HTML表格 - 我可以在thead之前添加额外的tbody吗?
  5. VC控件 Edit Control
  6. 深入SQL SERVER 2000的内存管理机制
  7. 简单表单提交php教程,PHP 表单数据提交与接收 超级简单《SSS教程 10》
  8. 软件专业大学生常用的刷题、找答案、找资源的网站
  9. halcon教程之VisionPro软件和Halcon软件 的详细对比
  10. 最新鲸发卡企业发卡网系统源码+免授权
  11. win11关闭微软拼音输入法中英文切换
  12. 微型计算机分类可以分为哪些,微型计算机的分类通常以微处理器的什么来划分...
  13. 数学之美——信息的度量
  14. AspectJ的Execution表达式
  15. 计算机网络协议(五)——DNS、HTTPDNS
  16. 关于Protel 2004 绘制电路原理图——遇到的一些小问题
  17. php面试时的自我称呼,求职者不知道在面试时该如何称呼hr?
  18. 2020-05-10
  19. 外呼系统需要服务器么,外呼
  20. linux下使用代理连接外网

热门文章

  1. Java集合---概述(1)
  2. 《嵌入式 Linux C 语言应用程序设计(修订版)》——2.1 嵌入式Linux下C语言概述...
  3. iOS中 百度地图详解
  4. 解决mac pro中三指轻按翻译的功能不起作用
  5. 淘宝TOP获取sessionkey
  6. MG3000系列设备IP修改内容
  7. 拿到串口的数据如何解析_详解如何用binlog2sql解析工具来实现mysql数据表异地恢复...
  8. 服务器接收到其他服务器传送的数据_其他-查找网内的其他DHCP服务器-从零开始学RouterOS系列21...
  9. 异常处理:java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext
  10. mysql如何只查询表中的前几条数据?多表查询前提了解