当前位置: 首页 > 面试题库 >

为什么没有更多的Java软件本机编译?

苍志文
2023-03-14
问题内容

我意识到字节码与本机代码(可移植性)的好处。

但是要说您始终知道您的代码将在x86架构上运行,为什么不为x86编译并获得性能收益呢?

请注意,我假设本机代码编译会提高性能。有些人回答说,实际上没有任何收获对我来说是个新闻。


问题答案:

因为性能提升(如果有)是不值得的。

同样, 垃圾回收
对于性能也很重要。很有可能JVM的GC优于嵌入在已编译的可执行文件中的GC,例如使用GCJ。

即时编译
甚至可以带来更好的性能,因为JIT具有在运行时可用于优化编译比编译时,编译器的更多信息。请参阅JIT上的维基百科页面。



 类似资料:
  • 问题内容: 我最近发现了这个习惯用法,我想知道是否有我想念的东西。我从未见过使用过它。我几乎使用过的几乎所有Java代码都倾向于将数据插入字符串或缓冲区,而不是像本示例那样(例如,使用HttpClient和XML API): 该代码使用Unix管道样式的技术来防止将XML数据的多个副本保留在内存中。它使用HTTP Post输出流和DOM Load / Save API将XML文档序列化为HTTP请

  • 问题内容: 许多Java书籍都将该语句描述为比该语句快。但是我没有找到任何地方为什么切换比if更快。 例 我有一种情况,我必须选择两项中的任何一项。我可以使用 要么 考虑item和BREAD是一个恒定的int值。 在上面的示例中,哪个操作更快,为什么? 问题答案: 因为有很多情况下,有一些特殊的字节码可以有效地评估switch语句。 如果使用IF语句实现,则将进行检查,跳转到下一个子句,进行检查,

  • 我想安装Primeng7.0.0到我的Angular项目,但首先我需要更新我的JHipster到最后一个版本。 当我将此命令写入terminal时,我得到以下错误

  • 单击箭头时,购物车项视图需要展开该特定视图并折叠当前展开的其他视图。该产品的项id被传递给父组件,以更新要展开的视图(活动的)。虽然id是在reducer中的expandedItem属性上传递和设置的,但它不会更新到子组件(即使它是作为prop在子组件上传递的)。当在最后重新计算子组件时,expandedViewItem仍然为0,这是它的默认值。有人知道如何让子组件接收更新的expandedIte

  • 问题内容: 我正在研究javax.smartcardio类。我正在使用eclipse 3.6,并且拥有JDK 6 SE。我可以使用语句import javax.smartcardio。*或其任何单个类,只要我更改首选项以警告或忽略禁止的引用即可。 我在Java SE 6 的标准文档中没有提到javax.smartcardio, 也没有在eclipse中弹出javadoc帮助。我在这里找到了文档。

  • 问题内容: 对于那些不需要背景知识的人来说,TL; DR版本是以下特定问题: Java为什么没有真正的多维数组的实现?有可靠的技术理由吗?我在这里想念什么? 背景 Java在语法级别具有多维数组,因为它可以声明 但这似乎并不是人们所期望的。它不是让JVM分配足够大的RAM来存储100 s 的连续内存块,而是以s 的数组数组的形式出现:因此,每一层都是RAM的连续内存块,但总体而言不是。因此,访问速