内存溢出指系统内存不够用了。你要求分配的内存超出系统能给你的,系统不能满足需求,产生溢出。
内存泄露指被分配出去的内存回收不了了,这样无论多少内存早晚会被用完,一般是程序逻辑有问题。最简单的例子就是死循环
由于程序判断错误经常发生此事,
申请了一个integer,但是给他存long才能存的数。(竟也是内存溢出)
java内存回收机制是从程序的主要运行对象开始检查引用链,遍历一遍当发现没有被引用的孤立对象就作为垃圾被回收,对象的
申请引用被引用赋值等,gc都要监控,释放对象的根本原则就是对象不再被引用。
运行gc的函数,System.gc;该函数不保证jvm的垃圾收集器一定会执行,因为不同的jvm实现者可能使用不同的算法管理gc,通
常gc的线程优先级别较低,jvm调用的策略也有很多种,有的是内存使用到一定程度才开始执行,有的是定时执行,有的是平缓执行,
有的是中断执行gc。