确定是否存在内存泄漏,启用详细的GC跟踪。 使用一些第三方插件进行分析(jprofile Visual VM等) 检查调用堆栈是否有未释放的引用(分析GC状态) 找出对象没有被垃圾回收的原因 编写代码手动删除此类对象
1.引用计数法 主要是查看该对象是否还有引用指向它,如果有则说明该对象不是垃圾,反之则为垃圾。 具体就是给一个对象上标一个数字用来记录有多少个引用指向了该对象,当这个数字记录为0时,那就表示这个对象已经没有引用指向它了,那么这个对象就变成了垃圾。存在问题:循环引用 2.根可达算法 基本思路就是通过一系列名为”GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。
在Java语言中,可以作为GCRoots的对象包括下面几种: (1). 虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中引用的对象。 (2). 方法区中的类静态属性引用的对象。 (3). 方法区中常量引用的对象。 (4). 本地方法栈中JNI(Native方法)引用的对象。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!