JAVA后端开发知识总结(持续更新…)
JAVA内存泄漏
一、内存溢出
??OutOfMemoryError:JVM内存过小;程序不严密,产生了过多的垃圾。其解决方法在于:
- 增加JVM的内存大小,特别是对启动参数内存值的设定。
- 从根本上解决Java内存溢出的唯一方法就是修改程序,及时地释放没用的对象,释放内存空间,避免死循环,防止一次载入太多的数据。
二、内存泄漏
??内存泄露,是指程序在申请内存并且用完这块内存后(对象不再需要了),没有释放已申请的内存空间。此时会出现内存持续上升的情况,容易导致OOM。在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点:
- 首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;
- 其次,这些对象是无用的,即程序以后不会再使用这些对象。
2.1 定位与解决
- 通过jstat命令查看GC总体情况,及各个区的使用率变化。
- 通过jmap生成堆转储快照,查看存活对象,它显示对象数量和占用byte大小。根据存活对象的不正常增长情况,分析程序中哪些地方用到了这种对象,也可以大致推断出可能的内存泄漏处。
- 非正常情况
- -XX:+HeapDumpOnOutOfMemoryError
|