Java新解:HotSpot JVM的惊人分配速度超越C++ malloc
需积分: 0 14 浏览量
更新于2024-09-04
收藏 47KB DOC 举报
在"Java理论与实践:再谈Urban性能传言"这篇文章中,作者Brian Goetz针对Java语言的性能问题提出了一个重要的观点,即现代JVM(HotSpot 1.4.2及以后版本)在对象分配方面的效率远超人们通常的认知。他指出,new Object()这样的Java代码路径在虚拟机中仅需10条左右的机器指令,相比之下,C语言中最高效的malloc实现平均每个调用需要60到100条指令。这意味着在实际性能对比中,JVM在分配性能上甚至超过了某些精心优化的C/C++实现。
分配性能对于整体程序性能的影响不容忽视,尤其是在C和C++程序中,malloc和free操作占用了相当大的比例,可能达到整体执行时间的20%到30%,而在健康的Java应用中,这一比例远低于这个水平。垃圾收集尽管在某些情况下不如直接内存管理(如malloc/free)直接高效,但其采用的大批量处理方式实际上提供了更多的优化机会,尽管可能会牺牲一些即时性。
作者强调,关于Java性能低下的观点往往是基于过时的信息或者对垃圾收集机制的误解。通过使用像Boehm-Demers-Weiser(BDW)这样的保守垃圾收集器进行实验,Zorn的研究表明,在某些C++程序中,采用垃圾收集可以带来显著的速度提升,尽管这可能限制了对内存分配和回收的优化空间。
这篇文章揭示了Java虚拟机在现代环境下已经实现了显著的性能改进,尤其是在内存分配方面,让开发者无需过多担心性能问题,而是可以把精力集中在代码逻辑上。同时,它也提醒我们,理解并利用好JVM的内存管理策略,是提高Java应用程序性能的关键。
2022-08-08 上传
2021-07-08 上传
2021-06-27 上传
2024-08-20 上传
2021-05-14 上传
2021-04-13 上传
2021-05-09 上传
2021-05-12 上传
weixin_38675341
- 粉丝: 8
- 资源: 998
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析