jni jvm 内存泄漏_内存泄漏
生活随笔
收集整理的這篇文章主要介紹了
jni jvm 内存泄漏_内存泄漏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OOM:內存溢出,內存泄漏多了就會造成OOM
1.什么是內存泄漏?——JVM,GC垃圾回收機制
內存不在GC掌控之內
(1)什么是垃圾回收機制?
舉例:
食堂和餐館吃飯
第一種:吃完飯了自己去把剩飯倒掉。C的使用:malloc
第二種:吃完了直接走人,服務員再把餐具拿走。Java: new Object()
問題:服務員怎么知道他要清理哪一個餐具呢?
他會找一個合適的時機,一次性回收很多。所以GC很耗性能;容易內存抖動和動蕩。
總結:某對象不再有任何的引用的時候才會進行回收。如果是弱引用,可以被GC回收。
可以作為GC root引用點的是:
1.Javastack中的引用對象;
2.方法區中的靜態引用指向的對象;
3.方法區中的常量引用指向的對象;
4.native方法中的JNI引用的對象;
5.thread——活著的線程
軟引用,內存不足時回收;弱引用,GC時回收;虛引用,隨時可能被回收。
(2)怎么判斷是不是垃圾對象?
1.GC能解決的
2.GC無能為力,你人為造成的——泄漏的對象
2.確定是否存在內存泄漏
經過大量操作后,當APP退出的時候,這個進程里面所有的對象就應該被回收了
3.確定內存泄漏的大致范圍
(1)誰泄漏了 (2)誰造成這個對象發生了泄漏
4.更細致的查找泄漏的位置和引用原因——MAT
生命周期不一致最容易造成內存泄漏
總結
以上是生活随笔為你收集整理的jni jvm 内存泄漏_内存泄漏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wincc无法修改服务器名称_WinCC
- 下一篇: layui如何获取父节点的父节点_jqu