‘壹’ java中,MinorGC、MajorGC、FullGC 什么时候发生
minorGC:新生代满了,就发生
FullGC:新生代满了,老年代也满了,还有新对象要产生,就发生
majorGC=FullGC
‘贰’ Java中full gc什么意思
gc是垃圾回收的意思(gabage
collection),内存处理器是编程人员容易出现问题的地方,忘记或者错误的内存回收导致程序或者系统的不稳定甚至崩溃,java的gc功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,java语言没有提供释放已分配内存的俄显示操作方法。
希望能帮到你,谢谢!
‘叁’ java 怎样规避full gc
据我观察JAVA程序,一般在命令行模式下运行JAVA任务,JDK可以承受的内存上限大概是机器物理内存的1/4。
比如我的服务器是16G的内存,那么JAVA程序可以占用的最大内存是4G左右,超出就报溢出。
所以在一般程序运行中,JAVA内存逐渐从
100MB 200MB, 300...1G...2G...... 膨胀到4G,在这个过程中,我的循环都设置了System.gc(),偶尔有占用内存减少的时候,但是基本下降都很有限,然后过一会儿又继续上升。直到上升到4G的时候,如果此时系统没有明确的数据持续写进内存,只是大量进行新建变量,赋值,然后生命周期结束待回收的过程,系统会大量进行GC的操作,保证JAVA内存不超过4G,但我似乎感觉一旦在内存在4G上下游动的时候,JAVA程序的性能就开始走低。
所以我的理解是,GC直到不得不执行的时候才会被执行,而且效果并不好。。。。
PS,如果是8G内存的服务器,GC频繁执行是在JAVA占用内存到达2G的时候。
同不知道如何进行高效的内存回收。本来没有任何写入内存操作的程序,但是程序处理问题一大了,占有内存就很多。