阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

手机号码,快捷登录

老司机
查看: 940|回复: 0

[转帖] 深入分析:JVM的优点与缺点

[复制链接]
  • TA的每日心情
    郁闷
    2012-3-7 10:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2012-1-6 10:51:15 | 显示全部楼层 |阅读模式
    当Java最初诞生的时候,它可以说是其他言语的退化版。不仅由于Java很简单,而且这一退化的言语还是一个可以运转第三方硬件字节码的虚拟机。它还是不良搜集站,从而令存储管理和内核转储(core dump)不再是费事。当然还有它相当片面的类库。虽然它没有什么惊世的新功能,但它把许多言语的优点基于一身。 本来Java是一个简单独一的言语,但是Sun在长期运营Java的进程中出现了很多错误,比如将言语与runtime合用一个名字,从而使得用户在识别JVM言语项目如Jython、JRuby时难以从思想上隔离Java。最主要的是这样对runtime很不公,由于Java Virtual Machine (JVM)有很多本人的独特之处。 缺点 没有一种技术是完美的,JVM也不例外。假如你工作在一个没有Java言语配置的设备上,JVM便无用武之地。JVM为其他言语提供了基础,但JVM最初不是为这个理念设计的。比如我们作为分配对象来维护我们的堆栈时,通常我们会直接操作实时堆栈并添加我们维护所需的其他字段,除此之外再没有控制堆栈的更好的方法。 还有,当我们创建一个Ruby Fixnum时也很费事,我们把这些值用一个Java对象包装。记忆枕Ruby的C implementation不过只是传递tagged ints,由于没有包装他们就不会符合各种列表,所以Java 基元(Java primitives)也不会切割它。 顺便说一下:JVM的启动时间也挺长。 那些为JVM编写高功能代码的开发者会觉得经常被JVM的black box特性所折磨,一旦你加载你的字节码,你就觉得像是摇动禁用词语的游戏手柄一样忐忑,不知道结果如何,black box就是意味着不可知。 优点: Hotspot 对于初学者来说,虽然Hotspot有些奥秘,但是功能方面它确实很棒,由于动态建模(dynamic profiling)是优秀功能的捷径。HotSpot从运转使用中采样数据,从而可以优化代码,进而得到良好功能。它相当于以模仿人工的方法停止优化。在程序运转的末尾,Java代码仍然解释执行,但HotSpot引擎末尾停止采样(Profiling)。HotSpot引擎可以集中精神来对HotSpot代码停止深度优化,从而使这部分代码的执行愈加迅捷。因而当Hotspot优化时,它为优化设立了一层保护来确保优化的根本原理无效;但当这层保护失效时,优化就会很慢。 这里是Hotspot在使用中的一个演示: 在图表中我们运转了一个Mandelbrot Generator很多次,然后测绘它每次生成的时间。你会看到JRuby 1.4.0清楚比Ruby 1.8.7以及1.9.2preview2表现更好。假如只看JRuby的终点,会发现比1.8.7慢,但当Hotspot运转后时间曲线迅速下降。


    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表