GC是java的优点,但在某些情况下也会成为java的缺点,特别是在内存的使用与GC策略不相符的时候。这些时候,我们一般会采用池化或者其他可以避免完全使用GC策略的方法来解决问题。但是这类的解决方法一般代价都会比较大。我们需要考虑新的方案来提升GC在这方面的性能。
那么为什么不能用显式的释放方案呢?因为如果添加入显式的释放方法的话,那么就会迫使java所有的对象也需要添加上显式的释放方法(你总不会希望释放自己对象的时候,对象内部的基本对象不会随之释放吧)。这样既破坏了java的体系结构,也使java失去了不会出现空指针的优点。所以,GC还是必须GC,我们必须寻找更好的策略来解决GC的弱点。
在应用中,经常会出现一次性对象这样对象,这类对象的特点是初始化一次,使用一次,然后等待被GC释放。这样的对象对于GC来说会是沉重的负担。因为GC对于这样的对象也必须查找一次引用。如果这类对象数量巨大,GC的时间将会相当的长。
在C或者C++中,我们通常在这种情况下把结构或者对象本身存储在栈中(而java是只储存指针)。我很奇怪为什么java不也这样做。哪怕是专门分配一个heap给栈中创造的对象也是好的。这样我们就能够轻易的指定一个对象的生存期,也能大大降低GC的压力。
另外,我们是否能考虑一种能够分組控制对象的方法。对组内对象的引用计数一律记载入组而不是记载在对象内。仅当组引用为0时再一次性的清除掉组内所有。这样理论上就会大大减少GC需要查询引用的数量。
以上两种方案都必须修改编译器以及jvm的实现才能做到。所以现在实现的可能还是非常的低。不过我认为如果实现,将会大大改善java在高性能应用中的不足。
分享到:
- 2008-11-06 12:43
- 浏览 2073
- 评论(5)
- 论坛回复 / 浏览 (5 / 2415)
- 查看更多
相关推荐
在本文中,我们将探讨如何使用Vue.js前端框架和Java后端服务来实现一个功能...这种功能的实现需要对前端和后端的技术栈有深入的理解,包括Vue.js的API、HTTP请求、Blob对象、FileReader以及Java的文件处理和HTTP响应。
直接链接和间接链接 ................... .. 36 链接激活(Activation) ............................ 36 执行(Execution) ..... 37 概览..... 37 运行状态(Running state) ...................... 37 链接...
【标题】"模拟手机通信录管理系统JAVA"是一个基于Java编程语言开发的学生课程设计项目,旨在构建一个能够管理和操作联系人信息的系统,类似于手机中的通讯录应用。通过这个系统,用户可以实现添加、编辑、删除联系人...
1. 资源管理:定义和管理系统的各种资源,如菜单、接口、文件等,并设定其访问规则。 2. 人员管理:创建和管理用户账户,分配给用户特定的角色。 3. 角色管理:定义角色,赋予角色不同的资源访问权限。 4. 部门管理...
2. 堆和栈:堆和栈是两种不同的内存空间,堆用来存储对象,栈用来存储方法的调用信息。 3. 排序算法:快速排序是最快的排序算法,可以用于排序大规模的数据。例如,给阿里2万多名员工按年龄排序,可以使用快速排序...
总结,这个“java权限管理系统(简单)”项目是一个实践性的教学示例,它展示了如何使用Java技术栈来实现基本的权限管理功能。通过学习和理解这个系统,开发者可以加深对Struts、Hibernate、Spring这三大框架的运用...
总之,Java包的使用是Java编程中的一个重要方面,它不仅有助于代码的组织和管理,还可以提高程序的安全性和可维护性。通过合理利用Java提供的各种包,开发者可以更加高效地开发出高质量的应用程序。
7. **线程**:理解并发和并行,知道如何创建和管理线程,熟悉synchronized关键字和ThreadLocal类。 8. **反射机制**:了解Class类,动态加载类,以及调用私有方法和构造器的能力。 9. **I/O流**:掌握文件读写,网络...
【标题】:“基于Java+SSM的试题库管理系统”是一个典型的Web应用开发项目,它结合了Spring、SpringMVC和MyBatis三个框架,用于构建高效、稳定的在线考试平台。 【描述】:这个系统旨在实现对试题的创建、管理、...
Java是一种广泛使用的面向对象的编程语言,因其跨平台性、安全性和强大的功能而受到欢迎。Java的设计理念是“一次编写,到处运行”,这意味着编写的Java程序可以在任何安装了Java虚拟机(JVM)的设备上运行。 #### ...
学生提问:当我们使用编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢? 13 1.5.3 运行Java程序 14 1.5.4 根据...
在这个系统中,Java语言作为主要的开发工具,利用其强大的面向对象特性和丰富的类库,实现了对研究生招生信息的有效管理和高效处理。 首先,让我们关注系统的数据库部分。在研究生管理系统中,数据库扮演了至关重要...
通过学习和分析其源代码,我们可以深入理解Java语言特性和面向对象编程的思想,同时掌握数据库操作、GUI设计以及文件处理等实用技能。对于进一步的改进,开发者还可以考虑引入更多的功能,比如联系人分组、联系人...
此外,深入理解Java内存管理,包括堆和栈内存,以及垃圾回收机制,也是面试中常见的问题。 其次,扩展知识部分涵盖Java集合框架,如ArrayList、LinkedList、HashMap、HashSet等数据结构及其适用场景。熟悉并发编程...
5. **Collection**: 集合 — 存储和管理一组对象的容器。 6. **ArrayList**: (数组列表)表示动态数组 — 动态调整大小的数组。 7. **HashMap**: 散列表,哈希表 — 使用哈希算法存储和检索数据的集合。 8. **Swing**...
11. Visual FoxPro数据库文件:它包含了用户数据和系统信息,可以是存放用户数据的文件,也可以是管理数据库对象的系统文件。 12. 修改表结构:在SQL中,修改表结构的命令是ALTER TABLE。 13. 分组报表索引表达式...
在IT行业中,SQL和Java是两个非常重要的编程语言和技术,特别是在数据库管理和后端开发领域。本文将深入探讨这两个领域的核心面试知识点,帮助你为即将到来的面试做好充分准备。 首先,让我们关注SQL面试题。SQL...
在准备Java秋招面试时,你需要对多个领域有深入的理解,包括Java编程基础、操作系统原理、计算机网络知识以及数据库管理。下面将详细阐述这些领域的关键知识点。 首先,让我们来看看Java面试的核心内容。Java是一种...
MySQL作为后端数据库管理系统,用于存储和管理数据。具体实现方式如下: 1. **Java+Swing**:Java作为一种广泛使用的面向对象编程语言,其强大的功能和丰富的类库非常适合开发此类应用。Swing则是Java提供的图形...