未来在Delphi中实现自动垃圾回收是否可行?许多应用程序不需要高度详细的对象释放控制,这只是额外需要关注的事情。
对于这样的应用程序,拥有类似Java垃圾回收器的垃圾回收器将会很有趣。
它可以在项目选项中设置。
这是否可能?
注意:我不是像这里所解释的那样手动创建它,我真正意思是希望成为Delphi特性。
换句话说:是否可能将FastMM设置为垃圾收集器?
未来在Delphi中实现自动垃圾回收是否可行?许多应用程序不需要高度详细的对象释放控制,这只是额外需要关注的事情。
对于这样的应用程序,拥有类似Java垃圾回收器的垃圾回收器将会很有趣。
它可以在项目选项中设置。
这是否可能?
注意:我不是像这里所解释的那样手动创建它,我真正意思是希望成为Delphi特性。
换句话说:是否可能将FastMM设置为垃圾收集器?
在C和C++中可以实现垃圾回收,因此我认为Delphi也可以拥有这样的功能。如果你交叉手指等待足够长的时间,Delphi可能会得到垃圾回收。但我不认为这是Embarcadero的优先事项。
你不能设置FastMM作为垃圾回收器,因为FastMM不执行垃圾回收,所以没有什么可设置的。假设Delphi未来有垃圾回收功能,那么它可能需要与内存管理器进行合作。如果这样的功能真正存在,而FastMM仍然是内存管理器,则FastMM可能会增加一些设置。
垃圾回收有其优点和缺点,我认为即使没有垃圾回收器,Delphi也是一个好的选择。甚至比托管的.NET应用程序占用更少的内存空间。有时候垃圾回收也会减慢进程,因为它必须查找不需要的资源,确认是否再次需要并删除它。如果需要再次使用,则必须重新加载(应用程序变慢)或出现错误。因此,对于专业程序员来说,手动释放内存是很好的选择。
最新版本的Delphi带有RTTI(这也是应用程序体积庞大的原因之一)。 我认为RTTI(运行时类型信息)可以在未来帮助我们。因为它保存了一些关于正在进行的进程的信息,所以我认为未来可能会出现类似垃圾收集器的功能,但不确定。
但是 Delphi for .NET 2007 和其他旧版 Delphi .NET 具有垃圾回收器和 VCL,但现在已被弃用(垃圾回收器也不能完全正常工作)