`

java内存泄漏的几个地方

阅读更多

   Java不需要程序员自己管理内存,但是在实际开发中总可能会出现内存泄漏的情况。effective java 上记载一般java内存泄漏有如下三种情况:

1 过期引用

    所谓过期引用就是永远不解除的引用(总有引用指向这个对象),java的垃圾回收机制的前提是该对象无引用指向。在集合中经常可以看见删除一个对象的时候需将其引用置为null,否则这个对象是不会被回收的。

2 缓存:

      一旦你把对象放入缓存中,它就很容易被遗忘掉。从而使得它不再有用之后很长时间留在缓存中。对于这种问题,有几个解决方案,可以用WeakHashMap代表缓存。当缓存中的项过期之后,他们就会自动被删除。

3  内存泄漏的 第三个常见来源是监听器和其他回调。

    如果你实现了一个API,客户端在API 处注册回调,却没显式的取消注册。除非你采取些动作,否则他们就会积聚。确保回收立即被当作垃圾回收的最佳办法是只保存他们的弱引用。例如,只将他们保存成WeakHashMap 中的键。

 

分享到:
评论

相关推荐

    Java内存泄露_JVM监控工具介绍

    java内存泄露查询的几个命令系统命令的使用说明

    Java堆外内存泄露场景总结.pdf

    Java堆外内存泄露场景总结,包含几个常用的可能,如:JNI,NIO,AWT/Swing,Inflater&Deflater;

    java内存管理问题及解决办法

    主要描述java的内存管理机制、释放条件,及内存泄漏的几种可能,四种引用内存的方式各自的优缺点。对很多人来说java的内存管理不再只是个黑盒子

    jProfiler7 java内存分析

    jProfiler7 java内存分析 里面包含jProfiler7安装版本,及key. 顺带有两个文档,一个en,一个cn. 还有几个html入门介绍及使用,包括案例怎么分析内存泄漏的整个分析解决过程。

    性能测试总结之内存泄露和内存溢出

    主要从以下几部分来说明,关于内存和内存泄露、溢出的概念,区分内存泄露和内存溢出;内存的区域划分,了解GC回收机制;重点关注如何去监控和发现内存问题;此外分析出问题还要如何解决内存问题。下面就开始本篇的...

    分析Android内存泄漏的几种可能

    从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。 Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存...

    Java问题定位技术.pdf

    3.Java内存泄漏分析和堆内存设置 4.关于并发和多线程 5.幽灵代码 6.常见的Java泥潭 7.JVM 8.关于字符集与编码 9.常用分析工具 10.Java最佳实践 11.关于数据库 12.工程实践 13.常见的案例 附录 A JProfiler内存泄漏...

    Java 中会存在内存泄漏吗1

    如果一个对象引用被无意识的保留起来了,那么垃圾回收器不会处理这个对象,也不会处理该对象引用的其他对象,即使这样的对象只有少数几个,也可能会导致很多的对象被排除在

    Java内存区域与内存溢出

    Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。下面详细阐述各数据区所存储的数据类型。  程序计数器(Program Counter Register)  ...

    java垃圾回收以及jvm参数调优概述

    而且这两个问题针对的内存区域就是Java内存模型中的堆。垃圾回收机制的引入可以有效的防止内存泄露、保证内存的有效使用,也大大解放了Java程序员的双手,使得他们在编写程序的时候不再需要考虑内存管理。本文主要对...

    进程调度算法、内存管理算法、银行家算法(Java实现),可用于课设.zip

    Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了...

    TextRank算法提取关键词的Java实现.zip

    Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了...

    计算机Java、网络面试资料

    由于Java不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性,现有的单继承机制就不能满足要求。与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。当一个类实现了接口以后,...

    经典遗传算法的Java实现以及遗传算法实现自动组卷.zip

    Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了...

    SM2 SM3 X.509 Cert 国密 数字签名 算法 国密证书 生成 签发 证书请求 keystore 纯java.zip

    Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了...

    基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现,可用于游戏,视频,加速等业务.zip

    Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了...

    Java 实现拼图游戏小案例

    Java 语言有以下几个优点: 1. 简单易学:Java 语言的语法和结构相对简单,与传统的 C/C++ 语言相比,去掉了一些复杂而容易出错的特性,使得初学者更容易上手。 2. 面向对象:Java 是一种纯粹的面向对象编程语言,...

    深入理解Java虚拟机精华知识点

    Java虚拟机有如下几个主要特点:首先,它的结构严谨,面向对象,能够摆脱硬件平台的束缚,实现了“一次编写,到处运行”的理想;其次,它提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄漏和指针...

    Java开发者技术书籍大全 - Java入门书籍.zip

    Java的主要特点和优势包括以下几个方面: 跨平台性(Write Once, Run Anywhere): Java的代码可以在不同的平台上运行,只需编写一次代码,就可以在任何支持Java的设备上执行。这得益于Java虚拟机(JVM),它充当了...

Global site tag (gtag.js) - Google Analytics