【问题标题】:SICStus Prolog garbage collection trace messagesSICStus Prolog 垃圾收集跟踪消息
【发布时间】:2020-06-08 10:25:56
【问题描述】:

浏览SICStus Prolog User's Manual我偶然发现了Prolog标志gc_tracing

我想知道更多,所以我从"Book Index" 开始,发现gc_trace 的3 个条目:

G
gc_trace (prolog flag): ref-lps-flg (#1: "4.9.4 Prolog Flags")
gc_trace (prolog flag): ref-mgc-egc (#2: "4.10.3 启用和禁用垃圾收集器")
gc_trace (prolog flag): ref-mgc-mgc (#3: "4.10.4 Monitoring Garbage Collections")

当我点击链接时,我发现了以下内容:

4.9.4 Prolog 标志

gc_trace

管理全局堆栈垃圾回收跟踪消息。

verbose   打开垃圾收集的详细跟踪。
简洁   打开垃圾收集的简洁跟踪。
关闭   打开关闭垃圾收集跟踪(默认)。

4.10.3 启用和禁用垃圾收集器

[...] 要在详细模式下监视垃圾收集,请将 gc_trace 标志设置为详细。 [...]

4.10.4 监控垃圾收集

默认情况下,不会向用户指示垃圾收集器正在运行。如果没有程序用完空间,也没有程序使用大量全局堆栈空间需要过多的处理时间,则不太可能需要此类信息。

但是,如果一个被认为使用大量全局堆栈空间的程序用尽空间或运行异常缓慢,那么用户可能想确定是否需要更多或更少频繁的垃圾收集。通过打开 gc_trace Prolog 标志从垃圾收集器获得的信息可能有助于此确定。

在“off - terse - verbose”的范围内,我想说:简洁!哈哈,只是认真的:)

最后,不用多说,这是我的实际问题:

给定 OCaml 垃圾收集器的详细标志,找到与 SICStus Prolog GC 详细级别“off”、“terse”和“详细”。


来自OCaml User's Manual

Module GC

mutable verbose : int;

此值控制标准错误输出上的 GC 消息。它是以下一些标志的总和,用于在相应事件上打印消息:

0x001 主 GC 周期的开始。
0x002 次要收集和主 GC 切片。
0x004 堆的增长和缩小。
0x008 堆栈和内存管理器的大小调整表。
0x010堆压缩。
0x020GC参数的变化。
0x040主要GC切片大小的计算。
0x080终结函数的调用。
@ 987654339@ 启动时的字节码可执行文件和共享库搜索。
0x200 压缩触发条件的计算。
0x400 程序退出时输出 GC 统计信息。默认值:0

end_of_file

【问题讨论】:

    标签: prolog garbage-collection ocaml sicstus-prolog verbosity


    【解决方案1】:

    terse 值仅显示 GC 即将发生的简短指示。 verbose 值打印有关 GC 的更多详细信息。详细信息未记录在案,可能会发生变化,即它们是供人类消费的。

    SICStus GC 确实有类似于“次要”和“主要”收集的东西,但 verbose 输出对于次要和完整收集是相同的。

    当内存区域改变大小时不是“垃圾收集”,因此目前没有办法得到指示(除非事后,通过调用statistics)。

    我不知道 OCaml 内存管理器,但我猜非off 值主要对应于前两个(“主要 GC 周期开始”和“次要收集和主要 GC 切片。”)OCaml 标志.

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2010-10-28
      • 2012-12-23
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多