内存泄漏及管理(01)-简述GC机制和检测工具
来源:互联网 发布:老友网南宁网络电视台 编辑:程序博客网 时间:2024/04/30 15:01
简述GC机制
JVM(Java虚拟机)
GC(垃圾回收器)
1. Java中的内存分配
- 静态存储区,编译时就分配好,在程序的整个运行过程中都存在。常量、静态变量。
- 栈区,当方法执行时,会在栈区内存中创建方法中的局部变量,方法结束后自动释放。
- 堆区,通常存在new对象,由GC回收。
2. Java中引用简介
- 强引用(StrongReference)
- JVM宁可抛出OOM,也不会让GC回收具有强引用的对象;
- 如果想中断强引用和某个对象之间的联系,可以显式的将引用赋值为null,这样JVM会在何时的时候回收该对象。
- 软引用(SoftReference)
- 只有在内存空间不足时,才会被回收的对象;
- 利用这一特性我们可以用它来实现图片、网页、临时数据的缓存。
- 弱引用(WeakReference)
- 触发GC时,一旦发现了只有弱引用的对象时,不管JVM内存如何都会被回收的对象。
- 虚引用(PhantomReference)
- 任何时候都可以被GC回收。
3. 何为内存泄漏
- 在C/C++中,所有的内存都需要我们手动申请、使用、释放。可以讲几乎所有和内存操作的东西全都是手动的。
- 在Java中,存在了一套GC机制,可以自动回收无用的内存。
- android虚拟机中垃圾回收使用的是根检索算法,GC会从根节点(GC Root)开始往下遍历,直接遍历或者间接遍历都没有遍历到的引用会被GC认为是垃圾,会被GC回收。
- java中的内存泄露是指一个无用对象持续占有内存或无用对象的内存得不到及时的释放,从而造成的内存控件的浪费称为内存泄露。也就是说一个你不需要的对象竟然还占着内存,还不释放,GC也不顶用。
- 内存泄漏一般是不恰当的强引用造成的。
内存泄漏会频发的触发GC导致程序卡顿,当内存泄漏到一定程度是还可能导致OOM。
检测工具
leakcanary工具
内存泄漏的常见场景和处理可见:
内存泄漏及管理(02)-内存泄漏的分析和处理
0 0
- 内存泄漏及管理(01)-简述GC机制和检测工具
- 内存泄漏及管理(01)-简述GC机制和检测工具
- 内存泄漏检测工具.和一些内存管理建议
- JVM内存管理及GC机制
- JVM内存管理及GC机制
- JVM内存管理及GC机制
- JVM内存管理及GC机制
- JVM内存管理及GC机制
- JAVA内存管理和GC机制
- JVM内存管理和GC机制
- Java中的内存泄漏和GC机制分析
- 内存泄漏分析及常用内存泄漏检测工具分享
- 内存泄漏分析及常用内存泄漏检测工具分享
- java内存管理,GC,内存泄漏
- 探讨JAVA内存泄漏原因和检测工具
- JAVA内存泄漏原因和检测工具
- JAVA内存泄漏原因和检测工具
- JAVA内存泄漏原因和内存泄漏检测工具
- lombok 注解
- 利用cookie实现侧滑菜单,在刷新以后依然保持原来的展开或者收缩样式
- Centos 7 安装 GitLab
- Ambari postgres数据库操作
- Java多线程编程模式实战指南(二):Immutable Object模式
- 内存泄漏及管理(01)-简述GC机制和检测工具
- C#委托使用详解(Delegates)
- Apache/Tomcat/JBOSS/Nginx区别
- 浅谈JSONP POST跨域
- Linux查看网卡是千兆还是万兆网卡
- Spring到底是什么?
- 【HTML5】HTML5
- 删除任务,OSTaskDel()
- Android常用控件ListView的简单优化之一: 在ViewHolder中定义static静态内部类