Skip to content

Dokka Gradle 疑難排解

本頁說明在 Gradle 組建中使用 Dokka 產生文件時可能遇到的常見問題。

如果您的問題未列於此,請在我們的 問題追蹤器 中回報意見回饋或問題,或在官方 Kotlin Slack 與 Dokka 社群交流。請點擊 此處 獲取 Slack 邀請。

記憶體問題

在大型專案中,Dokka 可能會消耗大量記憶體來產生文件。這可能會超過 Gradle 的記憶體限制,尤其是在處理大量資料時。

當 Dokka 產生過程耗盡記憶體時,組建將會失敗,且 Gradle 可能會擲出如 java.lang.OutOfMemoryError: Metaspace 等例外狀況。

目前正致力於提升 Dokka 的效能,儘管部分限制源自於 Gradle。

如果您遇到記憶體問題,請嘗試以下解決方案:

增加堆積空間

解決記憶體問題的一種方法是增加 Dokka 產生程序的 Java 堆積記憶體量。在 build.gradle.kts 檔案中,調整以下配置選項:

kotlin
    dokka {
        // Dokka 會產生一個由 Gradle 管理的新程序
        dokkaGeneratorIsolation = ProcessIsolation {
            // 配置堆積大小
            maxHeapSize = "4g"
        }
    }

在此範例中,最大堆積大小設定為 4 GB ("4g")。請調整並測試該值,以找出適合您組建的最佳設定。

如果您發現 Dokka 需要大幅擴展堆積大小(例如顯著高於 Gradle 本身的記憶體使用量),請在 Dokka 的 GitHub 存儲庫上建立問題

您必須將此配置套用於每個子專案。建議您在套用於所有子專案的慣例外掛程式 (convention plugin) 中配置 Dokka。

在 Gradle 程序中執行 Dokka

當 Gradle 組建和 Dokka 產生都需要大量記憶體時,它們可能會以個別程序的形式執行,進而在單一電腦上消耗大量記憶體。

為了最佳化記憶體使用,您可以在同一個 Gradle 程序中執行 Dokka,而不是作為獨立程序執行。這讓您可以統一配置 Gradle 的記憶體,而不需要為每個程序分別分配。

若要在同一個 Gradle 程序中執行 Dokka,請在 build.gradle.kts 檔案中調整以下配置選項:

kotlin
    dokka {
        // 在目前的 Gradle 程序中執行 Dokka
        dokkaGeneratorIsolation = ClassLoaderIsolation()
    }

增加堆積空間 相同,請測試此配置以確認其在您的專案中運行良好。

有關配置 Gradle JVM 記憶體的更多詳細資訊,請參閱 Gradle 文件

變更 Gradle 的 Java 選項會啟動新的 Gradle daemon,且該程序可能會持續存在很長時間。您可以 手動停止任何其他 Gradle 程序

此外,關於 ClassLoaderIsolation() 配置的 Gradle 問題可能會 導致記憶體洩漏