Memory management 一种具有垃圾收集和手动内存管理功能的编程语言

Memory management 一种具有垃圾收集和手动内存管理功能的编程语言,memory-management,garbage-collection,Memory Management,Garbage Collection,是否有任何编程语言使用垃圾收集,但也允许手动内存管理?例如,提供析构函数。编程语言有可能同时进行垃圾收集和手动内存管理吗 此处有相关问题,但没有答案: 感谢这当然是可能的,但它需要语言支持从两个(或更多)内存区域分配对象(假设它是一种OO语言,这肯定会让生活更轻松) 支持这一点的平台的一个例子是Java实时规范(RTSJ)。由于实时操作很容易受到非确定性GC的干扰,RTSJ在标准Java堆之外添加了可由应用程序代码使用的内存区域。RTSJ使用内存区域的概念,其中有三个:HeapMemory、S

是否有任何编程语言使用垃圾收集,但也允许手动内存管理?例如,提供析构函数。编程语言有可能同时进行垃圾收集和手动内存管理吗

此处有相关问题,但没有答案:


感谢

这当然是可能的,但它需要语言支持从两个(或更多)内存区域分配对象(假设它是一种OO语言,这肯定会让生活更轻松)

支持这一点的平台的一个例子是Java实时规范(RTSJ)。由于实时操作很容易受到非确定性GC的干扰,RTSJ在标准Java堆之外添加了可由应用程序代码使用的内存区域。RTSJ使用内存区域的概念,其中有三个:HeapMemory、ScopedMemory和不朽内存。ScopedMemory允许特定线程使用内存区域。当线程终止时,内存区域将自动释放。这依赖于开发人员小心不要在线程外共享对该区域的引用。不朽内存是一个永远不会被垃圾收集的内存区域。一旦在该区域分配了对象,就不可能回收空间(没有free()调用)


我不同意C和C++是与你的描述相匹配的语言的评论。两者都不在托管环境中运行,因此都没有任何形式的并发GC。

是。C和C++。谢谢你,艾略特。使用
GC\u MALLOC()
创建的对象是否可以使用
delete
销毁?Ada………在D中,您可以选择退出GC。在rust中,默认情况下有基于所有权的自动内存管理,但在适当的情况下可以使用引用计数、GC或arena分配器包装类型。即使是Java和C#也有一些不安全的概念,允许您在虚拟机崩溃的风险下手动管理内存。如果您使用Boehm GC,那么使用
GC_MALLOC()
分配的对象可以通过
GC_FREE()
显式释放。