a.
内存溢出
out of memory
,是指程序在申请内存时,没有⾜够的内存空间供其使⽤,出现
out of memory
。
List<Object> list = new ArrayList<>();
while (true) {
list.add(new Object());
}
b.
内存溢出可能的原因:
i.
程序中存在死循环
ii.
静态变量和静态⽅法太多了
iii.
内存泄漏:⽐如说⼀个静态的
list
,⼀直往⾥放值,⼜因为静态变量不会被释放,所以迟早是要内存溢出的
iv.
⼤对象过多:
java
中的⼤对象是直接进⼊⽼年代的,然后当多个⼤对象同时⼯作时造成程序的可⽤内存⾮常⼩,⽐如我list中原本最多可以放
1000
个对象,因为可⽤内存太⼩,放了
500
个就放不下了。
v.
程序分配内存过⼩:还有⼀种很常⻅的情况,在把⼀个很⼤的程序直接导⼊,直接就内存溢出了,原因就是内存相对这 个程序就是太⼩了,需要⼿动增加内存。
c.
内存泄漏
memory leak
,是指程序在申请内存后,⽆法释放已申请的内存空间,⼀次内存泄漏危害可以忽略,但内存泄漏堆 积后果很严重,⽆论多少内存,迟早会被占光。