根据上面讲解的JVM内存管理系统的工作原理,我们可以通过一些技巧和方式,让JVM做GC处理时更加有效率,更加符合应用程序的要求。以下就是程序设计的一些经验。
(1)最基本的建议就是尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null。我们在使用这种方式时,必须特别注意一些复杂的对象图,例如数组、队列、树、图等,这些对象之间的相互引用关系较为复杂。对于这类对象,GC回收它们的效率一般较低。如果程序允许,尽早将不用的引用对象赋为null。这样可以加速GC的工作。 例如:
… …
A a = new A();
// 应用a对象
a = null; // 当使用对象a之后主动将其设置为空
… …
但要注意,如果a是方法的返回值,千万不要做这样的处理,否则你从该方法中得到的返回值永远为空,而且这种错误不易被发现。因此这时很难及时抓住、排除NullPointerException异常。
(2)尽量少用finalize函数。finalize函数是Java给程序员提供一个释放对象或资源的机会。但是,它会加大GC的工作量,因此尽量少采用finalize方式回收资源。
(3)如果需要使用经常用到的图片,可以使用soft应用类型。它可以尽可能将图片保存在内存中,供程序调用,而不引起OutOfMemory。
(4)注意集合数据类型,包括数组、树、图、链表等数据结构,这些数据结构对GC来说,回收更为复杂。另外,注意一些全局的变量,以及一些静态变量。这些变量往往容易引起悬挂对象,造成内存浪费。
(5)尽量避免在类的默认构造器中创建、初始化大量的对象,防止在调用其自类的构造器时造成不必要的内存资源浪费。
(6)尽量避免强制系统做垃圾内存的回收(通过显式调用方法System.gc()),增长系统做垃圾回收的最终时间,降低系统性能。
(7)尽量避免显式申请数组空间,当不得不显式地申请数组空间时尽量准确地估计出其合理值,以免造成不必要的系统内存开销。
(8)尽量在做远程方法调用(RMI)类应用开发时使用瞬间值(transient)变量,除非远程调用端需要获取该瞬间值(transient)变量的值。
(9)尽量在合适的场景下使用对象池技术以提高系统性能,缩减系统内存开销,但是要注意对象池的尺寸不易过大,及时清除无效对象释放内存资源,综合考虑应用运行环境的内存资源限制,避免过高估计运行环境所提供内存资源的数量。
分享到:
相关推荐
Java程序设计是计算机科学中的一个重要领域,主要涉及使用Java编程语言进行软件开发。Java是一种广泛应用于服务器端、桌面应用、移动应用(尤其是Android平台)的高级编程语言。天津大学计算机系提供的这门java程序...
下面将详细讨论Java程序设计中的关键知识点。 1. **面向对象编程(OOP)**:Java是一种面向对象的语言,其核心理念是通过类和对象来组织代码。理解类的定义、对象的创建以及封装、继承和多态等概念是Java编程的基础...
Java程序设计基础是编程学习的重要领域,主要涵盖了Java语言的基础概念、语法结构和特性。Java是一种全面面向对象的编程语言,由Sun公司的James Gosling等人于1990年开发,最初命名为Oak,后来因互联网的兴起而更名...
《JAVA程序设计说明书》 Java程序设计是一种广泛应用于软件开发领域的技术,其强大的跨平台能力和丰富的类库使得它成为企业级应用、移动应用以及互联网应用的首选编程语言。本说明书将深入探讨Java程序设计的基本...
5. Java编程语言与C++的关系:文档中出现了Java和C++的比较,体现了Java语言在设计上受到了C++的影响,但Java语言设计者有意避免了一些C++中的复杂性,例如指针和内存管理的复杂操作。 6. Java中类的定义:文档提及...
Java程序设计是计算机科学中的重要课程,主要涵盖了Java语言的基础语法、编程逻辑以及高级特性。在本"Java程序设计课件"中,我们将深入探讨Java程序的结构框架、运行机理、Java虚拟机(JVM)以及Java的垃圾回收机制...
"Java语言程序设计第三版-习题答案.pdf" Java语言程序设计第三版-习题答案.pdf是Java语言程序设计的习题答案,涵盖了Java语言的基础知识、语法机制、平台架构、特征等方面。下面是该资源的知识点摘要: Java技术...
书中还会涉及异常处理,这是Java程序健壮性的关键。Java强制要求程序员处理可能出现的异常,以防止程序在运行时崩溃。此外,文件I/O操作也是Java编程中的常见任务,包括读写文件、处理流等。 集合框架是Java库中的...
Java程序设计是软件开发领域中的一个核心主题,它是一种广泛使用的高级编程语言,以其平台无关性、面向对象的特性以及丰富的类库而受到全球程序员的青睐。本资料集旨在通过通俗易懂的方式深入浅出地讲解Java编程的...
《JAVA程序设计经典代码》是一本深入探讨Java编程的资源集合,主要以PDF格式呈现,旨在帮助开发者理解和掌握Java编程的精髓。这本书包含了大量精心挑选的源代码示例,覆盖了Java语言的关键特性以及实际开发中的常见...
《Java程序设计简明教程》是一本专注于Java编程语言学习的教材,旨在为初学者提供一个清晰、简洁的入门路径。教程可能涵盖了Java语言的基础概念、语法结构、面向对象编程原则,以及实际应用中的关键技术和工具。在...
接下来,我们将详细探讨Java程序设计中的核心知识点。 1. **Java基础语法**:Java语言的基础包括变量、数据类型、运算符、流程控制语句(如if-else,switch,for,while等)。了解这些基础知识是编写任何Java程序的...
【JAVA程序设计】知识点详解: 1. **Java语言概论** - Java语言鲁棒性:Java具有良好的异常处理机制,能检查程序在变异和运行时的错误,以确保程序的稳定性。 - Java的跨平台特性:Java通过Java虚拟机(JVM)实现...
当我们谈论“java中与继承有关的程序内存分析”时,主要关注的是在Java程序运行时,内存是如何为继承体系的实例分配的。 Java内存主要分为三个区域:栈(Stack)、堆(Heap)和方法区(Method Area)。在讨论继承时...
2. **环境搭建**:学习Java的第一步通常是安装Java Development Kit (JDK),配置好环境变量,包括JAVA_HOME、PATH和CLASSPATH,以便于在命令行中执行Java程序。 3. **基本语法**:书中会详细讲解Java的基本数据类型...
电子科技大学的Java程序设计课程涵盖了Java语言的基础和核心概念,是针对期末复习的重要参考资料。以下是根据提供的题目解析总结的一些关键知识点: 1. **Java语言特点**: - 面向对象:Java是一种面向对象的语言...
Java程序设计涵盖了许多核心概念,包括: 1. **包与集合框架**:`...以上知识点覆盖了Java语言的基础语法、面向对象编程、输入输出、图形用户界面、线程管理和类的定义与使用等多个方面,是学习Java程序设计的基础。
### Java版简易计算器程序设计知识点解析 #### 一、项目概述 本项目为一个简易计算器的设计与实现,采用Java语言开发。该计算器具备基本的算术运算功能,并且集成了记忆存储功能,能够满足日常计算的基本需求。项目...