首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java编译器:可以转储关于在热点代码上运行什么优化的决定吗?

Java编译器:可以转储关于在热点代码上运行什么优化的决定吗?
EN

Stack Overflow用户
提问于 2022-10-19 07:24:35
回答 1查看 59关注 0票数 0

爪哇的绿手。

我在使用Azul系统的Falcon JIT编译器。选择在热点代码上运行的优化传递是可能的吗?

此外,在Oracle中,是否可以向java添加选项,以显示选择了哪些优化传递来优化热点代码?

我对java的工具链和基础设施并不熟悉。

编辑:

这里的优化传递我指的是函数内联、死代码消除、常量传递等转换传递,以及用于过程间优化的调用图分析、堆栈中对象分配和消除同步操作的转义分析。

我的目的是学习Falcon编译器在LLVM IR中所做的一些转换。通过使用java -XX:FalconIRDumpRoot=./falcon-ir/ -XX:FalconDumpIRToDiskOf=* myClassName,如果观察到热点,Falcon编译器可以转储.ll.opt.ll。前者的LLVM IR没有优化,后者的IR使用Azul的LLVM叉(称为Orca)引入的一些内在元素进行优化,以取代对象初始化的init调用。由于我可以在LLVM中使用-debug-pass-manager(用于新的pass管理器)或--debug-pass=Structure(用于传统的pass管理器)来打印编译期间使用的优化传递,所以我想知道Falcon编译器或Azul是否也提供了这样的选项来显示Falcon决定对热点代码使用什么优化。

Falcon编译器的文档只为Azul支持提供一些转储IR的选项,以帮助分析性能问题。是个黑匣子。我刚刚找到了一些技术报告,比如从VM获取信息的逃逸分析VM回调。还有其他像Falcon这样的JIT编译器,其后端也是基于LLVM并使用GC来管理内存,最重要的是能够在运行时打印优化决策?语言并不局限于Java。

打印编译级别和跟踪特定的编译阶段都是需要的,因为我现在使用Falcon作为一个黑匣子。

EN

回答 1

Stack Overflow用户

发布于 2022-10-19 16:58:32

李清伟,我不明白你在说什么。但是如果您说的是用于JVM优化和查看的GC选项。对于Azul -Xloggc:gclogfile_%t_%p.log,请帮助您查看所使用的选项。您可以使用https://docs.azul.com/prime/diagnosing-java-performance-problems-with-gc-log-analyzer.html来分析日志文件选项。如果要登录一个文件,也可以使用此-Xlog:gc,safepoint:gc.log::filecount=0

在Oracle中,-Xlog:gc,safepoint:gc.log::filecount=0

如果我理解得对,请告诉我。希望这能帮到你。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74121366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档