Java新解:HotSpot JVM的惊人分配速度超越C++ malloc
需积分: 0 128 浏览量
更新于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 上传
weixin_38675341
- 粉丝: 8
- 资源: 998
最新资源
- launch-list:跟踪全球航天器所有即将到来的发射日期时间
- HealthSpeaks
- manager,c#获取网页源码指定元素site:bbs.csdn.net,c#
- VB写的可视化的控件注册程序
- exportToZip:标识M文件的依赖性并创建一个ZIP文件:$ matlabroot / toolbox中的文件被省略,从而提供了一种打包工作的有用方法-matlab开发
- SQLAlchemy:SQLAlchemy作业
- Turn Negative Numbers to Purple-crx插件
- length-of-word-histogranm,c#开发想qq一样的软件源码,c#
- DupMaster:摆脱Mac上的重复文件-开源
- Instagram_test:DRF-示例
- [论坛社区]Phpwind会员电子邮件地址导出程序_phpwind_email.rar
- fdbt-site:票价数据构建工具的主站点
- INL Image Artifacts:CMOS 图像传感器中积分非线性和列 ADC 失配效应的示例和模型-matlab开发
- Project-23
- GUMT - the GNU Users Management Tool-开源
- SilverlightWmv,c#查询系统源码,c#