看完这篇文章,
- 能够使用“相关术语”来描述“GC”
- 我更喜欢“GC”(也许)
相关术语
内存泄漏 / 悬空指针 / stop-the-world GC / 增量 GC / 并发 GC
"供审查] 在看文章内容之前,先用上面的话来解释一下GC吧!
计划说明
- 什么是云?有人问过我并解释过,但我也不太了解。
- 我正在阅读文档,但我不明白你所说的一半......
- 不知道今天晚饭要不要吃炒茄子呢~什么是NAS?
类似的东西还不少,所以打算每天一个一个地学习一个我知道或知道的IT术语!
这是昨天的文章↓
什么是GC
GC = 垃圾收集 = 程序分配并自动释放不再需要的内存区域
- 开发用于简化 Lisp 中的内存管理
- 许多高级语言的标准实现
- GC 可通过 C/C++ 中的库获得
感谢GC,可以避免以下错误
-
内存泄漏= 对象存在但没有指向它的指针
- 但是,如果您编写的代码即使在发生 GC 时也保留指针,则会发生内存泄漏。
- 导致内存不足
-
悬空指针= 指向释放对象的指针
- 取消引用悬空指针时的意外行为
- double free bug = 试图再次释放之前释放的内存区域
* GC有多种实现方式,下面是最常见的追踪GC的故事
GC的时序有如下模式
-
停止世界 GC= 如何在 GC 期间完全停止应用程序线程
- 安全,因为没有发生新的对象分配或解除分配
- 在堆整个 GC = 完整 GC 期间应用程序有一段时间没有响应
- 适用于非交互式程序
-
增量GC= 如何多次运行 GC
- 总体比 stop-the-world GC 需要更长的时间
-
并发 GC= 如何与应用程序线程并行运行 GC
- 由于同时运行 GC 线程而导致吞吐量下降
- 不要停止程序执行
[Bonus] 我研究的时候出现的这个词是什么
- 堆内存 = 程序执行期间可以动态分配的内存区域
- 吞吐量 = 每单位时间的吞吐量
参考资料
- https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
- https://en.wikipedia.org/wiki/Tracing_garbage_collection
- https://docs.unity3d.com/Manual/performance-incremental-garbage-collection.html
- https://atmarkit.itmedia.co.jp/ait/articles/0704/24/news136.html
- https://en.wikipedia.org/wiki/Network_throughput
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308622636.html