簡體   English   中英

永久代空間中的 Java class 大小

[英]Java class size in PermGen space

有很多關於 Java object 大小的問答,這很容易理解。 但我想知道 PermGen 空間中 Java class 的大小。

我想知道這個的原因是因為我正在編寫一個代碼生成器,生成很多類。 本質上,我為數據庫中的每個表/視圖生成兩個類。 現在我也想model外鍵關系。 與其維護一個復雜的、可序列化的對象結構(考慮一個具有唯一鍵的表被屬於具有其他外鍵的其他表的多個外鍵引用等),我更願意為每個UNIQUE KEY生成一個 class 和一個class 每個外FOREIGN KEY

以下是我的問題:

  1. 我將在類加載器和 PermGen 空間上創建多少開銷?
  2. public類、 static類和private成員類之間有區別嗎?
  3. 您是否看到在源代碼中生成外鍵信息的更好方法?

我找到了一個不同的解決方案,不會浪費 memory 每個KEY生成一個 class 那么多。 我生成一個 class 大致如下所示:

public class References {

    // First, initialise all unique keys
    public static final UniqueKey<TAuthorRecord> SysPk_14655 = 
        createUniqueKey(TAuthor.T_AUTHOR, TAuthor.ID);


    // Then initialise all foreign keys
    public static final Reference<TBookRecord, TAuthorRecord> SysFk_14666 = 
        createReference(SysPk_14655, TBook.T_BOOK, TBook.AUTHOR_ID);
    public static final Reference<TBookRecord, TAuthorRecord> SysFk_14667 = 
        createReference(SysPk_14655, TBook.T_BOOK, TBook.CO_AUTHOR_ID);


    // Factory method for unique keys
    protected static <R extends Record> UniqueKey<R> 
    createUniqueKey(Table<R> table, TableField<R, ?>... fields) {

    // Factory method for foreign keys referencing unique keys
    protected static <R extends Record, U extends Record> Reference<R, U> 
    createReference(UniqueKey<U> key, Table<R> table, TableField<R, ?>... fields) {

}

然后,生成的表類中的實際表可以引用和使用上述鍵。 根據 BobG 在他的一條評論中的建議,我查看了JPA注釋。 但我發現它們描述起來不是很有用:

  • 多字段鍵( @IdClass需要一個類型作為參數,我想避免這種類型)
  • 多字段引用(怎么做?)
  • 使用不同的鍵從一個表到另一個表的多個引用
  • 唯一鍵,與主鍵共享許多屬性。

一些評論提到了為什么我應該創建這樣一個生成器,因為有很多已建立的框架。 我正在為http://www.jooq.org做這個。 而且我覺得 jOOQ 正在填補當今數據庫抽象可能性方面的空白。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM