【发布时间】:2011-08-17 04:12:56
【问题描述】:
有很多关于 Java 对象大小的问答,这很容易理解。但我想知道 PermGen 空间中 Java 类的大小。
我对此感到疑惑的原因是因为我正在编写代码生成器,生成很多类。本质上,我为数据库中的每个表/视图生成两个类。现在我还想为外键关系建模。与其维护一个复杂的、可序列化的对象结构(考虑一个具有唯一键的表被属于其他具有其他外键的其他表的多个外键引用等),我更愿意为每个UNIQUE KEY 生成一个类和每个FOREIGN KEY 一节课。
这是我的问题:
- 我将在类加载器和 PermGen 空间上创建多少开销?
-
public类、static类和private成员类之间有区别吗? - 您发现在源代码中生成外键信息的更好方法了吗?
【问题讨论】:
-
听起来像是在 perm 空间填满时获取 OutOfMemoryErrors 的秘诀。
-
谢谢达菲莫。这就是我问的原因。不过,我对具体数字很好奇
-
没有,因为我不知道你正在生成什么。我很好奇 - 当您已经有这么多持久性解决方案(直接 JDBC、Hibernate、iBatis、TopLink、JPA 等)可用时,为什么您认为这是必要的?您的解决方案是什么?
-
Re: 3. 您是否看到在源代码中生成外键信息的更好方法?Hibernate 通过特定 FK/PK 列上的注释或 XML 配置数据来实现这一点。但我支持 duffymo,你所做的听起来与已经建立的 ORM 解决方案非常相似——除非你试图从原始数据库模式中自动提出域对象。
-
@duffymo:我正在开发jooq.org。我认为目前还没有类似的解决方案。您提到的所有解决方案都具有其他解决方案所没有的东西。详情请查看手册。
标签: java memory code-generation permgen