1. 内存溢出:简单地说内存溢出就是指程序运行过程中申请的内存大于系统能够提供的内存,导致无法申请到足够的内存,于是就发生了内存溢出。
内存泄漏:内存泄漏指程序运行过程中分配内存给临时变量,用完之后却没有被GC回收,始终占用着内存,既不能被使用也不能分配给其他程序,于是就发生了内存泄漏。
2. 避免内存泄漏的几点建议:
1.尽早释放无用对象的引用。
2.避免在循环中创建对象。
3.使用字符串处理时避免使用String,应使用StringBuffer。
4.尽量少使用静态变量,因为静态变量存放在永久代,基本不参与垃圾回收。
3. 常见的内存泄露:
静态集合类(如HashMap,Vector)引起的内存泄漏;修改HashSet中对象的参数值,且参数是计算哈希值的字段;监听器;各种连接(如数据库连接)
4. 常见的内存溢出:
创建的对象太多,在进行垃圾回收之前对象数量达到了最大堆的容量限制造成堆溢出;常量池溢出;虚拟机栈和本地方法栈溢出