我的编程语言是从Java开始的,3年来,我开发了很多只使用Java的应用程序(好吧,有时是python)。
当我开始第一次正式学习计算机科学时,我意识到在内存管理方面存在着巨大的争议。
我开始用C/ C++做我的大学项目,然后意识到,啊!!
我不得不担心我的变量在内存中的位置,如果不再需要它们,我也必须释放空间。
奇怪的是,直到我们面临一个问题时,我们才知道它的存在,并且它是为我们处理的(就像Java为我们处理它一样)。
这激发了我在大学里学习系统课程的兴趣,想要深入了解垃圾是如何产生的。
(变量不再使用)是收集在Java和我如何编码无忧无虑的Java 3年!
好的,从头开始。 您输入int x = 5。 在运行时,即程序执行期间,该x将指向堆上4个字节的位置,其值为5。 您在1000行代码中的一行中使用了x,然后就不再使用了! 令人恐惧的是,这4个字节被锁定为程序中几乎不再使用的变量。 解决方案:使用较小的变量? 不可能:我们知道这些高级编程语言旨在让我们自由使用自己想要的东西! 即使从未接受过计算机科学方面的正式教育,这也有助于编写代码并以此为生!
另一个解决方案:计算机应该以某种方式(以非常幼稚的方式)不断检查内存中这些剩余的/未使用的字节,并继续为我们所用分配它们。
有很多算法/方案以混合和匹配的方式使用,可以为我们完成这种自动清洗。 它们偏离各种逻辑。 其中一些逻辑回答以下问题。 在了解这些逻辑之前,请三思而后行!
-
一旦不使用变量,那该什么时候去垃圾收集?当内存已满时,即完全需要执行此操作时!只是偶尔。
-
垃圾回收时应该停止分配吗?
-
是否应该以这种方式进行分配,来让垃圾收集更高效、更清洁?
-
对象存活/有用的方式是否有规律?
在下一篇博客中,我将尝试用实际的实现来回答这些问题。直到那时候快乐的垃圾被处理,噢,我是说编码!