- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《JVM学习笔记》.doc
JVM 学习笔记
Jack.Wang(本文未完,待续…..)
摘要:JVM 作为 Java 的核心技术,很多朋友想必也有研究。一直都在关注 JVM 方面的技术,以前看过一些书籍和网上的资料,自己也发了些 Blog 文章,不过还是没有彻底的了解 JVM 机制,最近有时间研究了研究,特此写下一篇文章并结合笔者多年实践以揭露 JVM 实现机理。
关键字: JVM,Java 技术, 虚拟机,Java 架构
JVM 架构引言
Java 的平台独立,安全和网络可移植性是的 Java 最适合网络计算环境,java 的四大核心技术是,Java 语言,字节码格式,Java API,JVM。每次你编写Java程序时你就用到了这四项技术,那么你是否对他们有足够的了解呢?
很多人把 JVM 看成是 Java 的解释器,这是错误的理解,并不是所有的 JVM 实现都 Java 的解释器,有的也用到了 JIT (Just-In-Time) 技术。Java 是不允许直接操作本地机器指令的,对于Java方法来说有两种:Java和native,对于native我更习惯用C++ 写DLL,但Java并不提倡你这么做,因为有损Java平台独立性。JVM 中除了执行引擎就是类加载器了,ClassLoader也分为两种:原始加载器和加载器Object,原始加载器使用和写JVM 一样的语言写的,比如用C写的类加载器,而加载器Object就是用 Java 实现的类加载器,方便我们扩展,比如你自己可以 New 一个 URLClassLoader 从网络上下载字节码到本地运行。一个类的加载和他参考的类的加载应该用同一个 ClassLoader。这一点在发生异常的时候很难找出,比如 OSGI 中每个 bundle 都有自己独立的 ClassLoader,对于新手很容易犯错误而无从下手,我们熟悉的WEB 服务器 Tomcat 的类加载器是分层(有继承关系)的,所以在应用整合的时候也很容易发生 ClassLoader 相关的异常,而这样的异常往往很难定位。平台互异的字节序问题,在Java中,字节码是大字节序的。Java 为支持开发者开发应用软件提供了大量的 API,可以说,在计算机领域的大部分计算中Java都有对应的解决方案。
C++中可能比较受关注和困扰的就是指针了,而在Java中用“参考”这样一个类似的东西代替了,参考不向指针那样允许参与计算,避免了开发人员直接操作内存,还有个垃圾回收机制也避免了开发者手动释放内存,还有就是 C++ 中的数组是不进行边界检查的而Java中每次使用数组的时候都要进行边界检查,岂不安全。 可见Java相比C++ 提高了开发效率和安全性。Java和C++ 比运行速度是个大问题,因此任何语言都不万能的,在开发是我们应该适当权衡,Java运行速度低的原因主要有:
Interpreting bytecodes is 10 to 30 times slower than native execution.
Just-in-time compiling bytecodes can be 7 to 10 times faster than interpreting, but still not quite as fast as native execution.
Java programs are dynamically linked.
The Java Virtual Machine may have to wait for class files to download across a network.
Array bounds are checked on each array access.
All objects are created on the heap (no objects are created on the stack).
All uses of object references are checked at run-time for null.
All reference casts are checked at run-time for type safety.
The garbage collector is likely less efficient (though often more effective) at managing the heap than you could be if you managed it directly as in C++.
Primitive types in Java are the same on every platform, rather than
您可能关注的文档
最近下载
- 西南18J112 墙标准图集.pdf VIP
- 2025-2026学年高一上学期《树立正确三观:从庞众望的成长看青春担当》主题班会课件.pptx
- 北京市海淀区2024~2025学年七年级上学期期中考试数学试卷.docx
- 2025电力数据资产管理体系白皮书.docx VIP
- 《运动神经元病》课件.pptx VIP
- 肾上腺皮质腺瘤护理查房.pptx VIP
- 药物制剂生产实训(初级)课件 2-2 PPT:人员卫生管理.pptx
- 三年(2023-2025)中考历史真题分类汇编:专题07 统一多民族国家的巩固与发展·选择题(全国通用)(解析版).docx VIP
- 环境工程原理课件.pptx VIP
- 5_1_名雅化工不饱和聚脂树脂腻子(原子灰)MSDS.docx VIP
文档评论(0)