最近系统在导出到excel的时候总出现内存溢出。特研究下,大部分程序员写代码的时候都不会考虑一下细节:
1、不要对同一个对象初始化多次.例如:
public class A{
private ArrayList list= new ArrayList ();
public A(){
list= = new ArrayList (); // 这里应该去掉,因为list= 已经被初始化.
}
2、处理Java的内存泄露问题:确认该对象不再会被使用,接着典型的做法——把对象数据成员设为null
注意,当局部变量不需要时,不需明显的设为null,因为一个方法执行完毕时,这些引用会自动被清理。
例子:
List myList=new ArrayList();
for (int i=1;i<100; i++)
{
Object o=new Object();
myList.add(o);
o=null; //没必要
}
此时,所有的Object对象都没有被释放,因为变量myList引用这些对象。正确的做法:当myList后来不再用到,将之设为null,释放所有它引用的对象。
3、用StringBuffer代替字符串相加 :String一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。
而StringBuffer类使用append和insert等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。
4、变量只有在用到它的时候才定义和实例化。(类似1)
5、别用new Integer。JDK中对Integer的实例化进行了优化,Integer类缓存了-128到127这些值的Integer,如果使用Integer.valueOf(int i),传入的int范围正好在此内,就返回静态实例。这样如果我们使用Integer.valueOf代替new Integer的话也将大大降低内存的占用。
其他类型同理。
6、用不到字段不要查询出来。
select t.* from table t 和 select t.c1,t.c2 from table的区别,主要体现在数据的传输量。查询的字段多少跟数据量是成正比的,特别是中国的网络状况并不让人满意,如果你只用到了c1和c2两个字段,就按第二种写法吧。你也许会说,我的项目部署在局域网中,传输速度很快。即便如此,查询之后封装到对象中,全部字段都查出来和查询所需的字段,占用内存也是跟字段数成正比的。
当然,还有很多优化内存占用的办法,先写这么多。如果做到了以上几点,相信内存溢出的几率会减少很多。
附查看内存占用的代码:
long memory = Runtime.getRuntime().totalMemory()
- Runtime.getRuntime().freeMemory();
System.out.println(String.format("%.1f MB",
(memory / (1024.0 * 1024.0))));
分享到:
相关推荐
在Java开发领域,有多种工具可以帮助开发者进行代码优化。以下是关于"JAVA代码优化工具"的一些详细知识点: 1. **JProfiler**: JProfiler是一款强大的Java性能分析器,它提供了详细的内存分析,CPU剖析,线程监控等...
### Eclipse 开发性能优化与 Java 代码性能优化 在日常的软件开发过程中,尤其是在使用 Eclipse 进行 Android 开发时,经常会遇到 IDE 运行缓慢的情况。为了提高开发效率,本文将详细介绍 Eclipse 开发环境及 Java ...
《深入解析Java编写的安卓系统优化软件源代码》 在当今移动互联网时代,安卓系统作为全球最广泛使用的智能手机操作系统之一,其性能优化显得尤为重要。Java作为一种跨平台的编程语言,被广泛应用于安卓应用开发,其...
【JAVA开发源代码】是一个与Java编程相关的学习资源,它可能包含了从项目构思到最终实现的完整开发过程。虽然描述中提到的是一个简洁的20字概述,但我们可以深入探讨Java开发的一些关键知识点。 首先,Java是一种...
在Java开发中,J2EE(Java 2 Platform, Enterprise Edition)是一个关键部分,它为开发企业级应用提供了框架和组件。J2EE包含了Web容器和应用服务器,如Servlets、JSP(JavaServer Pages)用于动态网页开发,EJB...
代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么...但是如果有足够的时间开发、维护代码,这时候必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率是有提升的。
其次,重构是优化代码的关键步骤。《重构-改善既有代码的设计(简体中文)》中详细介绍了如何通过一系列小型、安全的步骤来改进代码结构,而不影响其外在行为。常见的重构技术包括提取函数、提取类、引入参数对象等,...
Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...
Java代码优化是一个持续的过程,它包含了许多细节和技巧,能够帮助开发者编写出更高效、更易于维护的代码。...优化是一个细致的工作,需要在实际开发中不断地学习和实践,不断地调整和改进代码以达到最佳状态。
《Java代码与架构之完美优化——实战经典》是一本深入探讨Java编程语言和架构优化的书籍,其配套代码集提供了一系列实例,旨在帮助读者更好地理解并应用书中的理论知识。这个压缩包包含的文件名为“03_《Java代码与...
一个优秀的程序员,不仅要会编写程序,更要会编写高质量的程序感受Java开发中的大智慧,让你的Java程序更优美。专 注于Java应用程序的优化方法、技巧和思想,深入剖析软件设计层面、代码层面、JVM虚拟机层面的优化...
这些工具可能包括代码编辑器、编译器、调试器、性能分析器等,旨在简化开发过程并优化代码质量。 【描述】:博文链接指向的“https://hyf20120411.iteye.com/blog/1983007”可能是一个关于Java开发工具的讨论或者...
在描述中提到的"java项目开发全程实录PDF",意味着书中详细记录了Java开发的每一个步骤,包括但不限于需求分析、系统架构设计、数据库设计、类与对象的设计、MVC模式的应用、单元测试、集成测试、性能优化以及项目...
学习这些基础知识有助于优化代码性能,解决复杂问题。 7. **异常处理与日志记录**:源代码中会展示如何正确地捕获和处理异常,以及使用日志工具(如log4j)记录程序运行状态,这对调试和问题定位至关重要。 8. **...
总的来说,《阿里Java开发手册-黄山版》不仅是一份编码规范,更是一种开发文化和哲学,它鼓励开发者遵循最佳实践,追求高效、高质量的代码,同时不忘社会责任,将稿费捐赠公益事业,用技术的力量回馈社会。
总的来说,《Java项目开发全程实录-源代码.zip》为学习者提供了一个从理论到实践的桥梁,让初学者能够更好地理解和应用Java开发技术,对于提升编程技能和项目经验具有极大的帮助。如果你希望深入Java项目开发,这个...
java程序性能优化Java是目前应用最为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的...
Java程序性能优化是每个开发人员都需要关注的重要领域,特别是在企业级应用中,高效稳定的Java程序能够显著提升用户体验,降低服务器资源消耗。这本书“Java程序性能优化 让你的Java程序更快、更稳定”提供了深入的...
总的来说,《亮剑 Java项目开发案例导航》是一个全面的实战平台,涵盖了Java开发的多个方面。通过深入研究源代码和注释,你不仅能提升Java编程技能,还能增强项目实践经验,为未来的职业发展打下坚实基础。
Java开发典型模块大全源代码是Java开发者们的重要学习资源,涵盖了广泛的Java编程实践。这个集合不仅提供了丰富的示例,还可能包括了视频教程,虽然由于体积较大,这里仅分享了源代码部分。以下是对这些典型模块的...