# GC随想

```
最近在看Go语言，发现Go语言中的GC跟Java中有些不太一致，于是就当作一个总结
记录下来Java和Go中是如何进行GC的
When is the best time to do a GC? When nobody is looking. 
Using camera to track eye movement when subject looks away do a GC.
```

## 什么是GC（Garbage collection）

* 在老式的C/C++程序中，程序员定义了一个变量，就是在内存中开辟了一段相应的空间来存值。 由于内存是有限的，所以当程序不再需要使用某个变量的时候，就需要销毁该对象并释放其所占用的内存资源， 好重新利用这段空间。在C/C++中，释放无用变量内存空间的事情需要由程序员自己来处理。 就是说当程序员认为变量没用了，就手动地释放其占用的内存。但是这样显然非常繁琐，如果有所遗漏，就可能造成资源浪费甚至内存泄露。 当软件系统比较复杂，变量多的时候程序员往往就忘记释放内存或者在不该释放的时候释放内存了
* 这个回收垃圾释放内存对操作就叫做GC，现代化编程语言中，常常将GC的复杂度对程序员进行屏蔽，而是交由专门的垃圾回收器进行收集。

## GC方案
