在像 Hibernate 等使用 JPA/ORM 时,通常定义 Java bean/POJO 来表示映射到相应 RDBMS 表的实体。但是,我正在尝试开发的平台涉及支持 200,000 个此类实体。如果我必须使用标准的 Spring MVC + Hibernate 模型,我最终可能会创建 200K 模型 POJO、200K DAO 类和另外 200K 左右的 JavaBeans,其中包含的数据格式可以在视图中显示。除了 Spring、Hibernate 和许多其他库所需的 Java 类之外,这相当于大约 60 万个 Java 类。假设每个 POJO Model 类有 10 个 String 实例变量及其对应的 getter/setter。现在我想知道加载所有这些类需要多少 PermGen 空间。
找到 PermGen Space 开销的最佳方法是什么?一个疯狂的想法是编写一个程序来生成这些 200K 类,加载它们(但不创建它们的实例)并运行分析器来识别“没有实例的类”指标以及如何获取它们的永久大小。
事实上,我也在寻找一个更简单的解决方案,它可以只使用 Field Vs Value Map 的 java.util.Map,其中 Field 包含有关 RDBMS 表/列映射和生成 JDBC CRUD 语句的元数据(例如JOOQ.org没有新类的开销)。
目标是运行节目而不必使用太多反射和加载太多只携带数据的类!
非常感谢您对此事的任何帮助。