- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 OracleJDK/Hotspot 8 及以下版本中,我使用了这组标志:
-XX:+PrintAdaptiveSizePolicy
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCCause
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintTenuringDistribution
-XX:+UnlockCommercialFeatures
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
记录 G1GC 的事件。在旧的格式中,我能够在每个年轻的系列中看到,究竟花了多少时间。示例:
2.130: [G1Ergonomics (CSet Construction) finish choosing CSet, eden: 26 regions, survivors: 0 regions, old: 0 regions, predicted pause time: 3284.94 ms, target pause time: 40.00 ms]
, 0.0409345 secs]
[Parallel Time: 36.4 ms, GC Workers: 8]
[GC Worker Start (ms): Min: 2130.0, Avg: 2130.1, Max: 2130.2, Diff: 0.2]
[Ext Root Scanning (ms): Min: 0.7, Avg: 0.9, Max: 1.9, Diff: 1.2, Sum: 7.5]
[Update RS (ms): Min: 0.0, Avg: 0.9, Max: 1.5, Diff: 1.5, Sum: 7.1]
[Processed Buffers: Min: 0, Avg: 1.1, Max: 2, Diff: 2, Sum: 9]
[Scan RS (ms): Min: 5.9, Avg: 9.5, Max: 13.7, Diff: 7.8, Sum: 76.0]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.7, Max: 1.4, Diff: 1.4, Sum: 5.5]
[Object Copy (ms): Min: 20.3, Avg: 24.0, Max: 27.0, Diff: 6.6, Sum: 191.6]
[Termination (ms): Min: 0.0, Avg: 0.1, Max: 0.3, Diff: 0.3, Sum: 1.1]
[Termination Attempts: Min: 1, Avg: 193.6, Max: 248, Diff: 247, Sum: 1549]
[GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
[GC Worker Total (ms): Min: 36.0, Avg: 36.1, Max: 36.2, Diff: 0.2, Sum: 289.0]
[GC Worker End (ms): Min: 2166.3, Avg: 2166.3, Max: 2166.3, Diff: 0.0]
[Code Root Fixup: 0.3 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 0.7 ms]
[Other: 3.5 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 2.2 ms]
[Ref Enq: 0.0 ms]
[Redirty Cards: 0.7 ms]
[Humongous Register: 0.1 ms]
[Humongous Reclaim: 0.0 ms]
[Free CSet: 0.1 ms]
[Eden: 208.0M(11.0G)->0.0B(10.9G) Survivors: 0.0B->32.0M Heap: 212.0M(21.9G)->32.1M(21.9G)]
[Times: user=0.22 sys=0.01, real=0.04 secs]
但是在我切换到 Oracle Hotspot JDK 9 之后。我根据 Oracle 文档将其更改为那些参数:
-Xlog:safepoint,gc*,gc+ergo*=trace,gc+age=trace
我看到的是:
[2018-05-03T11:39:16.592-0700][65.378s] GC(8) - age 1: 104795024 bytes, 104795024 total
[2018-05-03T11:39:16.592-0700][65.378s] GC(8) Running G1 Free Collection Set using 8 workers for collection set length 1404
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) MMU target violated: 41.0ms (40.0ms/41.0ms)
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Updating Refinement Zones: update_rs time: 0.495ms, update_rs buffers: 113, update_rs goal time: 3.590ms
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Updated Refinement Zones: green: 10, yellow: 30, red: 50
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Pre Evacuate Collection Set: 0.2ms
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Evacuate Collection Set: 314.6ms
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Post Evacuate Collection Set: 6.1ms
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Other: 0.5ms
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Eden regions: 1325->0(1389)
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Survivor regions: 79->15(176)
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Old regions: 9->81
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Humongous regions: 9->9
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Metaspace: 80171K->80171K(1124352K)
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) Pause Young (G1 Evacuation Pause) 11364M->830M(22472M) 321.378ms
[2018-05-03T11:39:16.593-0700][65.379s] GC(8) User=2.43s Sys=0.07s Real=0.32s
我的来源: https://blog.gceasy.io/2017/10/17/43-gc-logging-flags-removed-in-java-9/和 https://docs.oracle.com/javase/9/tools/java.htm#GUID-BE93ABDC-999C-4CB5-A88B-1994AAAC74D5__CONVERTRUNTIMELOGGINGFLAGSTOXLOG-A504703E
但是,我如何查看每个阶段实际花费的时间(对象复制与更新 RS..)
谢谢
最佳答案
最后的答案是添加
gc+phases*=debug
旗帜。
现在我可以了
2018-05-08T16:18:26.671-0700][2.429s] GC(0) Ext Root Scanning (ms): Min: 0.5, Avg: 1.8, Max: 4.9, Diff: 4.4, Sum: 14.6, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Update RS (ms): Min: 0.0, Avg: 1.2, Max: 2.4, Diff: 2.4, Sum: 9.2, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Processed Buffers: Min: 0, Avg: 1.1, Max: 2, Diff: 2, Sum: 9, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Scan RS (ms): Min: 2.5, Avg: 5.2, Max: 10.7, Diff: 8.2, Sum: 41.8, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Code Root Scanning (ms): Min: 0.0, Avg: 0.4, Max: 1.3, Diff: 1.3, Sum: 3.0, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) AOT Root Scanning (ms): skipped
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Object Copy (ms): Min: 20.7, Avg: 26.2, Max: 28.2, Diff: 7.5, Sum: 209.9, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Termination (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 1.1, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Termination Attempts: Min: 1, Avg: 229.0, Max: 356, Diff: 355, Sum: 1832, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) GC Worker Total (ms): Min: 34.4, Avg: 35.0, Max: 35.3, Diff: 0.9, Sum: 279.7, Workers: 8
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Post Evacuate Collection Set: 1.8ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Code Roots Fixup: 0.1ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Preserve CM Refs: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Reference Processing: 1.2ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Clear Card Table: 0.1ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Reference Enqueuing: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Merge Per-Thread State: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Code Roots Purge: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Redirty Cards: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Clear Claimed Marks: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Free Collection Set: 0.4ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Humongous Reclaim: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Expand Heap After Collection: 0.0ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Other: 0.3ms
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Eden regions: 15->0(1400)
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Survivor regions: 0->4(176)
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Old regions: 0->0
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Humongous regions: 1->1
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Metaspace: 20169K->20169K(1069056K)
[2018-05-08T16:18:26.671-0700][2.429s] GC(0) Pause Initial Mark (Metadata GC Threshold) 128M->32M(22472M) 37.796ms
这正是我要找的。
所以flags的最终命令组合是
-Xlog:safepoint,gc*,gc+ergo*=trace,gc+age*=trace,gc+phases*=debug:file=/app/log/gc-%t.log:time,uptime:filecount=2,filesize=100M
关于java - OracleJDK/Hotspot 9 GC 日志记录标志 - 如何查看 G1GC 中花费的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165011/
我正在研究调试应用程序中的“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 服务器上运行它时,我得到了意想不到的结果。本质上,在我尝试过的某些情况下,多态性的成本高
我是一名优秀的程序员,十分优秀!