GC

## GC overhead limit exceeded NB服务器报错。查看日志后,发现报这个错误。由于GC内存占用过高引起的。查看服务器监控,发现都增长了20%左右的内存占用。有个服务器内存占用直接干到了90%+。这个错误是JDK1.6之后添加的错误类型。是为了防止内存溢出添加的预警错误。当GC占用内存过高时,就会抛出这个异常。 导致这个错误的原因是因为经过长时间的GC操作,都无法回收,导致可用内存越来越少,俗称内存泄露。 我们在写代码的使用也应当注意,尽量少用或不使用递归调用,在使用循环时,能不嵌套,就不要嵌套。在循环体内非必要不创建对象,创建的对象。能复用的,尽量复用,否则循环创建对象,GC无法回收时,就会导致内存泄露。 Sun官方定义:“并行/并发回收器在GC回收时间过长时会抛出OutOfMemoryError,过长的定义是,超过98%的时间用来做GC并且回收了不到2%的堆内存,用来避免内存过小造成应用不能正常工作。” 未完待续。。。