问题标签 [java-aot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 9 中是否提供 Ahead-Of-Time 编译?
根据JEP 295
任何 JDK 模块、类或用户代码的 AOT 编译都是实验性的,在 JDK 9 中不受支持。
要使用 AOTed java.base 模块,用户必须编译模块并将生成的 AOT 库复制到 JDK 安装目录或在 java 命令行中指定它。
我对上面的陈述感到困惑,如果 JDK 9 不支持 AOT,那么我们如何使用 AOT 编译模块?
我的第二个问题是,如果 AOT比 JIT 有很多优势,为什么 JDK 9 不支持它?
java - JEP 295 AOT:多次编译的对象
我正在尝试使用JDK9 的新 AOT功能编译应用程序服务器,并且面临许多挑战。
应用服务器由约 180 MB 的 jars 组成;一起编译会溢出整数,所以我尝试将每个模块编译为一个(.so)库。这些模块依赖于其他模块,所以我不得不使用-J-cp -J
dependencies将它们放在类路径中。这导致了 4.4 GB 的库 - 因为 AOT 应该加速服务器启动,您可以想象从磁盘加载它并没有真正帮助。(可以剥离这些库的调试信息,但我们仍在讨论与 jar 相比规模增长的顺序。)
我很失望jaotc
实际上类加载编译的类,这会触发静态构造函数(这有时会给我带来错误)。此外,编译器无法处理缺少的引用类,有时这只是运行时依赖——即使没有它们,服务器也可以正常运行。所以我不得不提供空的模拟类来满足编译器。
但是,当使用 AOT 跟踪(-Xlog:aot+class+load=trace:file=/tmp/aot.txt:none
而不是 stdout -XX:+PrintAOT
)运行服务器时,我发现这些库也包含一些依赖项:
这证实了我的怀疑,即 lib 包含的不仅仅是我给编译器编译的 jar 中的代码,但至少还包含超类的代码。我也不确定 JVM 在多个库中找到同一个类时的行为。
是否有可能消除重复?大/多库项目的推荐方法是什么?
java - 您可以将 jaotc(Java Ahead-of-Time 编译器)与 jlink(模块组装器/优化器来创建运行时映像)一起使用吗?
这里的目标是:
创建一个运行时映像,它自己剥离了 JRE(最小化大小)——这就是 jlink 给我们的
创建本机可执行库而不是使用字节码(改善加载时间并希望消除混淆的需要)——这就是 jaotc 给我们的
但是,没有任何好的文档可以将两者关联起来。似乎有很多矛盾的方式来处理这两个流程。
是否可以使用使用 jaotc 生成的二进制文件的 jlink 构建运行时映像?
android - 创建 oat 文件失败
我开发了一个应用程序,旨在让相机应用程序拍照并保存它。
但我的问题是:
有时在拍照并调用我的应用程序后,我的应用程序崩溃了(没有调用 onActivityResult())。
我的应用程序使用 multidex,我无法删除它。即时运行也是启用的。
这是我的代码:
我的应用程序没有记录任何错误,但android OS 记录了这个: