我正在评估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,它将不可避免地堆积堆内存。