我试过了,确实可以显著提高启动速度。然而,考虑到 Clojure 的典型使用方式,其使用 ergonomics 并不理想。AppCDS 需要预先创建一个要存档的类列表,并且确保用于生成存档的类路径在运行时类路径之前。
在当前使用 Clojure 的大多数场合中,尤其是在开发时间这种最需要的时候,没有关于如何选择正确的共享存档的支撑(这取决于 Clojure 版本),也没有确保它是类路径前缀的支撑。
此外,大多数启动缓慢的Clojure应用程序之所以缓慢,是因为它们可能需要读取和编译大量的clj文件(AppCDS不适用)或者需要加载AOT(先行编译)类(AppCDS适用,但您只能使用一个存档,因此使用预构建的Clojure存档会阻止这种功能的使用)。请注意,在使用AOT代码时通常是与发展过程中的工作相矛盾的(通常不是AOT编译或动态重新加载)。
如果您确实想在您的应用程序中使用它,您可以编译一个uberjar,然后使用它生成AppCDS存档并使用它。我怀疑您会发现启动时间有大幅提升。然而,如上所述,这不太可能适合开发(人们最关心的地方)。
但,正在进行JEP工作可能会使AppCDS更具灵活性,例如 https://openjdk.java.net/jeps/350。因此,适用性可能最终会改变!