了解完这些之后,以下的转载一热衷于钻研技术的哥们Richen Wang关于内存管理的一些建议——
1、手动将生成的无用对象,中间对象置为null,加快内存回收。
2、对象池技术 如果生成的对象是可重用的对象,只是其中的属性不同时,可以考虑采用对象池来较少对象的生成。如果有空闲的对象就从对象池中取出使用,没有再生成新的对象,大大提高了对象的复用率。
3、JVM调优 通过配置JVM的参数来提高垃圾回收的速度,如果在没有出现内存泄露且上面两种办法都不能保证内存的回收时,可以考虑采用JVM调优的方式来解决,不过一定要经过实体机的长期测试,因为不同的参数可能引起不同的效果。如-Xnoclassgc参数等。
推荐的两款内存检测工具
1、jconsole JDK自带的内存监测工具,路径jdk bin目录下jconsole.exe,双击可运行。连接方式有两种,第一种是本地方式如调试时运行的进程可以直接连,第二种是远程方式,可以连接以服务形式启动的进程。远程连接方式是:在目标进程的jvm启动参数中添加-Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 1090是监听的端口号具体使用时要进行修改,然后使用IP加端口号连接即可。通过该工具可以监测到当时内存的大小,CPU的使用量以及类的加载,还提供了手动gc的功能。优点是效率高,速度快,在不影响进行运行的情况下监测产品的运行。缺点是无法看到类或者对象之类的具体信息。使用方式很简单点击几下就可以知道功能如何了,确实有不明白之处可以上网查询文档。
2、JProfiler 收费的工具,但是到处都有破解办法。安装好以后按照配置调试的方式配置好一个本地的session即可运行。可以监测当时的内存、CPU、线程等,能具体的列出内存的占用情况,还可以就某个类进行分析。优点很多,缺点太影响速度,而且有的类可能无法被织入方法,例如我使用jprofiler时一直没有备份成功过,总会有一些类的错误。
转自:http://topic.csdn.net/u/20090602/10/BD9D4BA2-DBEB-49B3-8651-67C5DE2B228A.html
分享到:
相关推荐
#### 四、内存管理实践建议 1. **合理利用栈和堆**:栈适用于生命周期较短的数据,堆适用于生命周期较长或不确定的数据。 2. **避免内存泄漏**:确保动态分配的内存得到及时释放。 3. **考虑内存对齐**:适当调整...
### Qt的内存管理:深入解析与实践 #### 核心概念与原则 在Qt框架下进行软件开发时,内存管理是至关重要的一个环节。Qt内存管理的核心理念在于,由Qt自身来负责大部分对象的生命周期控制,包括内存的分配与释放。...
在这份由Sun Microsystems公司出版的《JVM内存管理白皮书》中,我们可以找到关于Java虚拟机(JVM)内存管理的详细介绍和深入分析。这份文档对于想要深入了解JVM工作原理的读者来说是一份宝贵的学习资料。在这份...
### 一种VxWorks内存管理方案 #### 摘要 本文主要探讨了嵌入式开发环境下内存管理的基本要求及关键问题,并提出了一种适用于VxWorks操作系统的内存管理方案。该方案旨在优化内存资源利用,提高内存分配的效率与...
GBASE 8S数据库是一款由南大通用数据技术股份有限公司开发的关系型数据库管理系统,它在内存管理方面有独特的设计和优化策略,以确保高效的数据处理和系统的稳定性。内存管理是数据库性能的关键因素,GBASE 8S将其...
JDK 6在内存管理方面的一些特性,例如对GC算法的改进、内存分配策略等。 理解这些概念和机制对于优化Java应用程序的性能和稳定性至关重要。深入学习和实践将使开发者能够更好地调试和解决内存相关问题。
Vue3前端项目内存管理优化建议.docx
首先,YARN内存管理涉及到三个主要角色:ResourceManager(RM)、ApplicationMaster(AM)和NodeManager(NM)。 1. ResourceManager(RM):RM是全局资源调度器,负责决定应用程序的容器(Container)分配。`yarn....
《WINDOWS程序员使用指南》主要涵盖了DLL(动态链接库)和内存管理这两个关键的编程主题,这对于Windows平台上的软件开发人员来说至关重要。DLL是Windows操作系统中一个核心特性,它允许多个程序共享同一段代码和...
### C++内存管理详解 #### 重要性及挑战 C++是一种强大且高效的编程语言,尤其在内存管理方面给予了程序员极高的控制权。...遵循上述规则和建议,可以帮助开发者减少内存管理相关的困扰,提升代码质量和稳定性。
### JVM内存管理详解 #### 一、引言 在探讨JVM内存管理之前,我们先来看一下为何要深入了解这一主题。对于深入掌握Java的人来说,内存管理是不可或缺的一部分。随着技术的发展,内存管理变得越来越自动化,但这也...
然而,为了减少这种混乱,建议优先使用标准库提供的容器,如`std::vector`,它能自动处理内存管理,更安全也更方便。例如,`addresslines`可以定义为`std::vector<string>`,避免了手动管理数组的复杂性。 总的来说...
《Windows程序员使用指南》系列教程的第一部分主要涵盖了DLL(动态链接库)和内存管理这两个核心概念,对于深入理解和开发Win32应用程序至关重要。在Windows操作系统中,DLL是共享代码和资源的重要机制,而内存管理...
本篇文章将详尽地探讨Windows内存管理机制以及C++中的内存分配实例。 首先,我们来了解一下Windows操作系统是如何进行内存管理的。Windows内存管理的核心目标是高效地分配和回收内存,以满足各个进程的需求,同时...
LabVIEW是一种图形化编程语言,以其直观的可视化界面和自动内存管理著称。然而,随着项目的复杂性和规模增长,优化内存管理变得至关重要,以确保程序的高效运行。本文将探讨为何需要优化LabVIEW的内存管理,以及如何...
#### 一、关于内存管理(About Memory Management) 内存管理是程序运行过程中分配、使用以及释放内存资源的过程。一个优秀的程序应该尽可能地减少内存使用,并合理地在不同的数据与代码间分配有限的内存资源。在...