- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在看《Scala in depth》这本书的时候,提到HotSpot编译器有几个重要的特性,其中之一就是“Dynamic De-Optimization”:
It is the ability to determine if an optimization did not, in fact, improve performance and undo that optimization,allowing others to be applied
HotSpot 似乎会尝试各种“优化”,并从中选择最好的一个。
但是我不是很明白。这里的“优化”都是HotSpot提供的吗?我的意思是程序员经常尝试使用一些技巧来优化代码,HotSpot 会处理它们吗?
HotSpot 是否会尝试任何常见的“优化”?
最佳答案
Oracle 提供了一个 (rather concise) summary of this performance techniques applied by the JVM .它解释说:
Deoptimization is the process of changing an optimized stack frame to an unoptimized one. With respect to compiled methods, it is also the process of throwing away code with invalid optimistic optimizations, and replacing it by less-optimized, more robust code. A method may in principle be deoptimized dozens of times.
在这个总结中,去优化的原因罗列如下:
- The compiler may stub out an untaken branch and deoptimize if it is ever taken.
- Similarly for low-level safety checks that have historically never failed.
- If a call site or cast encounters an unexpected type, the compiler deoptimizes.
- If a class is loaded that invalidates an earlier class hierarchy analysis, any affected method activations, in any thread, are forced to a safepoint and deoptimized.
- Such indirect deoptimization is mediated by the dependency system. If the compiler makes an unchecked assumption, it must register a checkable dependency. (E.g., that class Foo has no subclasses, or method Foo.bar is has no overrides.)
就个人而言,我找到了this blog entry关于微基准测试非常可读,其中还涵盖了 HotSpot VM 上的优化和反优化主题。另外,我可以推荐reading through this presentation .
关于java - 关于HotSpot动态反优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522870/
我正在研究调试应用程序中的“OutOfMemoryError: Metaspace”错误。就在 OOME 之前,我在 gc 日志中看到以下内容: {Heap before GC invocations
我目前正在使用 SmoothDivScroll 来实现图像的滚动流。但是,左边的 Hotspot 太快了,而 Right Hotspot 似乎 react 不正常。 我设置了一个 fiddle 来展示
是否有命令行参数来增加 Hotspot 将编译的 Java 方法的最大大小(从 8000 个字节码开始)? 最佳答案 您可能需要下载 sources并为此使用调试标志构建(我不确定)。 java -X
我正在尝试处理一个 excel 文件。但是我遇到了以下问题 An unexpected error has been detected by HotSpot Virtual Machine: SIGS
有些人使用NetBeans 来跟踪和调试JDK9。但是,由于我使用 ssh 访问服务器上的源代码,所以我必须使用 GDB 来跟踪源代码并查看 JDK/Hotspot 代码的控制流,而我不能使用 GUI
Pure methods是那些没有副作用的:它们的唯一作用是返回一个值,该值是其参数的函数。 使用相同的参数对同一个纯方法的两次调用将返回相同的值。那么,假设两次调用具有相同参数的纯方法,HotSpo
假设您有一个“简单的”枚举: public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATUR
众所周知,HotSpot 分析运行时使用模式和性能特征,然后在 Java 应用程序运行时基于该分析优化 JIT 流程。因此,在尝试对 Java 应用程序进行基准测试时,通常建议谨慎行事,以便允许在进行
为了简化问题,我们假设在我们的 JRE 中,我们有一个不使用 JIT 的 Hotspot JVM 实现。这意味着我们不会预编译机器代码。 我想理解,JVM在遇到字节码时,解释器是否使用Hotspot编
观看Towards a Universal VM演示文稿中,我研究了这张幻灯片,其中列出了 HotSpot JIT 所做的所有优化: 在特定于语言的技术部分中存在反反射。我试图在互联网上查找有关它的一
我要为 Java 社区做出贡献,并且我对 JVM 很感兴趣。 现在我想下载最新的 JVM Hotspot 源代码并跟踪更新。 首先,我转到http://openjdk.java.net/ . 在其左侧
好吧,我对这个问题很困惑。我正在尝试运行一些似乎适用于一个人但不适用于另外两个人的专有软件。软件抛出此异常: Exception in thread "AWT-EventQueue-1" java.l
HotSpot 虚拟机检测到意外错误: EXCEPTION_ACCESS_VIOLATION (0xc0000005),位于 pc=0x6d6cf45b、pid=1800、tid=2824 Java
据我了解 modulus operation可以使用一些& 明智的魔法进行优化,其中除数是 2 的幂... 这可能是 JIT 编译器进行的优化? 最佳答案 我在这个问题上花了一些时间,写了这个 blo
我正在阅读 HotSpot VM 应用的优化技术,并发现 this presentation by Oracle其中列出了 HotSpot VM 尝试内联方法调用时的三种可能条件: Devirtual
我正在寻找一个开源 JavaScript 库/插件,它可以让我实现一个自定义函数: 允许特权用户在图像上的任意位置放置一个或多个图形图标(例如,类似 Google 的图钉),并将超链接、评论或其他属性
关于 HotSpot JVM 垃圾收集的一些问题。 我们有一个正在运行的 java 进程,选项是: -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateSt
了解 Java HotSpot VM 的最佳方式是什么?如果我想修改源代码并添加自己的功能,最好的开发环境是什么(ctags 是否可以很好地与大型代码库配合使用,或者我是否需要一个成熟的 IDE)?
这是一个长时间运行的服务器应用程序,它会产生大量短暂的垃圾,并且在启动后几乎没有任何东西。大多数时候年轻一代收集速度很快,即使是 10 GB 也很快,因为它几乎都是垃圾,但我们偶尔会看到残酷的异常值。
当我在 Java Hotspot 客户端中运行计时测试程序时,我得到了一致的行为。然而,当我在 Hotspot 服务器上运行它时,我得到了意想不到的结果。本质上,在我尝试过的某些情况下,多态性的成本高
我是一名优秀的程序员,十分优秀!