图示Golang垃圾回收机制

垃圾回收概念
程序创建对象等引用类型实体时会在虚拟内存中分配给它们一块内存空间,如果该内存空间不再被任何引用变量引用时就成为需要被回收的垃圾。操作系统会记录一个进程运行时的所占用的内存、CPU和寄存器等资源,当进程结束后便由操作系统能够自动回收资源。但是对于一个运行较长时间的程序,如果使用完内存资源后没有及时释放就会造成内存泄漏甚至系统错误。
以不支持自动垃圾回收的C++为例:
void foo()
{
char *p = new char[128];
// 对指针的使用
delete[] p; // delete语句释放对象数组
}

如果由于异常或者其他原因导致delete语句没有正常执行,且该函数被频繁调用,那么很容易占用所有系统内存从而导致程序崩溃,如果泄漏的是系统资源的话甚至还会导致系统崩溃。另一方面如果我们在不该释放内存的时候释放内存,那么仍然在使用这块内存的指针就会变成野指针wild pointer,使用该指针对内存进行读写是未定义的行为。
由于C++支持比较强大的指针计算功能,因此在C++中引入自动垃圾

图示Golang垃圾回收机制最先出现在Python成神之路

版权声明:
作者:Zad
链接:https://www.techfm.club/p/4280.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>