SICStus Prolog垃圾收集跟踪信息

问题描述 投票:1回答:1

浏览一下 SICStus Prolog用户手册 我偶然发现了Prolog的旗帜 gc_tracing.

我想知道更多的东西,所以我开始在... ... "图书索引" 并发现3个条目为 gc_trace:

G gc_trace (prolog 标志): ref-lps-flg (#1: "4.9.4 Prolog Flags") gc_trace (prolog标志): ref-mgc-egc (#2: "4.10.3 启用和禁用垃圾收集器") gc_trace (prolog标志): ref-mgc-mgc (#3: "4.10.4 监控垃圾收集")

当我跟着链接走的时候,我发现了以下内容。

4.9.4 Prolog标志

gc_trace

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

冗长的   开启垃圾收集的动词跟踪。 简洁   开启垃圾收集的梗概跟踪。 关闭   关闭垃圾收集器的跟踪(默认)。

4.10.3 启用和禁用垃圾收集器。

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

4.10.4 监视垃圾回收

默认情况下,用户不会得到任何关于垃圾收集器正在运行的指示。如果没有程序用完空间,也没有使用大量全局堆栈空间的程序需要过多的处理时间,那么这种信息就不太可能被需要。

但是,如果一个被认为使用了很多全局栈空间的程序跑出了空间,或者运行得异常缓慢,那么用户可能要确定是否需要更多或更少的垃圾收集频率。通过打开gc_trace Prolog标志从垃圾收集器获得的信息可以帮助判断。

在频谱上"简明扼要 - 啰嗦",我会说。Terse! 哈哈,只是认真的:)

最后,废话不多说,下面是我的实际问题。

给定OCaml垃圾回收器的verbosity标志, 找到合适的组合来对应SICStus Prolog GC的verbosity级别 "关闭", "简练",和"冗长".


来自 OCaml用户手册:

模块GC

mutable verbose : int;

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

0x001 主要GC周期的开始。 0x002 小集合和大GC分片。 0x004 堆的增长和收缩。 0x008 调整堆和内存管理器表的大小。 0x010 堆的压缩。 0x020 GC参数的改变。 0x040 计算主要GC分片大小。 0x080 调用最终化函数。 0x100 启动时的字节码可执行文件和共享库搜索。 0x200 计算压实触发条件。 0x400 程序退出时输出GC统计数据。默认值。0.

end_of_file

prolog garbage-collection ocaml sicstus-prolog verbosity
1个回答
1
投票

在这里,我想知道更多的信息,于是我开始在 "书籍索引 "中找到了3条gc_trace的条目:G gc_trace ... terse 值仅打印一个简短的指示,表明GC即将发生。该 verbose 值打印了更多关于GC的细节。这些细节没有记录在案,可能会发生变化,也就是说,它们是供人使用的。

SICStus GC确实有类似于 "minor "和 "major "的集合,但是它的 verbose 的输出对于minor和full collection都是一样的。

当内存区域改变大小时,并不是 "垃圾收集",因此,目前没有办法在这种情况发生时获得指示(除了事后,通过调用 statistics).

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

© www.soinside.com 2019 - 2024. All rights reserved.