如何在没有GC的情况下关闭Crystal中的GC并自己进行内存管理



我正在评估Crystal编程语言,它适用于实时、低延迟的应用程序,这些应用程序不会被垃圾收集器中断。

两个问题:

是否可以从堆中释放某些类?例如,在下面的循环中:

while true
p = Person.new
# do stuff with p
free p # <-------- HERE
end

Java中有没有像-verbose:gc这样的标志,可以让我们看到GC正在做的一切?

干杯!

您可以使用GC.free释放任何堆分配的内存。这是不安全和潜在的危险,你肯定知道。

Crystal使用BDWGC,因此您可以使用它的运行时配置选项(如GC_PRINT_STATS(来启用日志记录。

如果需要,可以通过传递-Dgc_none标志来完全禁用垃圾收集器。但是,整个标准库假定与垃圾收集一起使用,并且不进行任何手动内存管理。因此,如果使用stdlib,它将不可避免地堆积堆内存。

最新更新