`
RednaxelaFX
  • 浏览: 3052632 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

Java虚拟机分享演示稿2010-12-28版

    博客分类:
  • Java
阅读更多
内容见附件。
这玩儿转成PDF之后愈发巨大,下一版可能不用7-zip压一下都无法传到JavaEye上做附件了呢。

该演示稿的前两版本在关于Java程序的执行的一次分享一帖中可以找到。
这次的更新主要是加了些图,讲解Java程序与JVM的一些“接触面”、整个执行的步骤、HotSpot中的对象布局、线程之类的。还有很多页仍然是空白的没把内容填进去。总之慢慢来吧,还会不定时更新的。

对内容有建议、疑问的都请在这边回复,欢迎拍砖 

嗯,另外想提一下:
这组演示稿里从别的地方引用来的图基本上都有给来源的链接或说明,如果写漏了的话请联系我。而多数的图表是我画的。
欢迎转载。转载前如果能先与我联系的话我会很高兴 ^_^
并不期望别人引用了之后也都指明出处是这里,但最低限度请转载者不要声称那些是自己画的。


使用过我这组演示稿中的图片的帖,友情链接:
JVM学习笔记(二)------Java代码编译和执行的整个过程 / JVM学习小结
分享到:
评论
11 楼 RednaxelaFX 2011-01-07  
cajon 写道
啊哈,我理解错了。

你的意思是说,当方法调用的时候,调用方会将参数压栈,然后进行方法调用(地址跳转)。你这里说的“共享”就是被压栈的参数了。

呵呵,我完全理解错意思了。我还以为VM会自动优化方法调用,避免不必要的参数Clone呢。

嗯,共享的就是上个栈帧压了参数的部分,当作是下个栈帧的局部变量区的一部分。
想像一下,如果每个栈帧都是独立的、无交叠的对象,那在栈帧之间交换数据必然涉及拷贝;而当栈帧是在一个连续的空间上分配、栈帧之间有交叠区域的时候,就容易避免参数的冗余拷贝了。

对.NET(CLR的实现)来说,这里提到的共享根本不是问题:CLR里没有解释器,它执行的托管代码都是JIT过的,跟MSIL在概念上指定的只是在表面语义上相同,但实现却很不同。CLR里托管方法所使用的栈帧布局跟MSIL里声明的“概念上的栈帧布局”就完全不一样,调用约定(calling convention)是把头两个在字宽内放得下的参数从ecx/edx传递,其它从左向右压栈传递,并且上一栈帧压栈的部分自然的成为下一栈帧取参数的地方;也就是说栈帧共享空间本来就是很自然的事,在x86上常见的C、C++编译器都生成类似的代码。
10 楼 cajon 2011-01-07  
啊哈,我理解错了。

你的意思是说,当方法调用的时候,调用方会将参数压栈,然后进行方法调用(地址跳转)。你这里说的“共享”就是被压栈的参数了。

呵呵,我完全理解错意思了。我还以为VM会自动优化方法调用,避免不必要的参数Clone呢。
9 楼 cajon 2011-01-07  
我看到你在PPT的82页提到:“前后两个栈帧可以共享一部分区域来传递参数。”

这种共享能力是JVM的一种优化呢,还是在Class中每个方法的Code属性中进行了某种标识触发的?

让我想象,这个是很难实现的。

另外,这种优化能力“.NET虚拟机”有没有提供能?
8 楼 arcko 2011-01-04  
2011继续学习
7 楼 花花公子 2011-01-04  
RednaxelaFX 写道
花花公子 写道
有slideshare链接吗?遇到zip中文名乱码的问题。

没传到slideshare上。说来我都没注册过slideshare帐号…要放那边么?主要是东西的完成度太低了所以我才没大肆宣传啊啥的 = =

没关系,等我想看了,直接向你要
6 楼 RednaxelaFX 2011-01-03  
yznxing 写道
诶呀,有没有上次我们聊过的内容啊
我一直想总结下,没时间画图呢!~

先看看~

呃…像是栈跟代码的关系,之类的话题的图我是没画的…那个太诡异了 XD
5 楼 yznxing 2011-01-03  
讲解Java程序与JVM的一些“接触面”、整个执行的步骤、HotSpot中的对象布局、线程之类的。还有很多页仍然是空白的没把内容填进去


诶呀,有没有上次我们聊过的内容啊
我一直想总结下,没时间画图呢!~

先看看~
4 楼 RednaxelaFX 2011-01-03  
花花公子 写道
有slideshare链接吗?遇到zip中文名乱码的问题。

没传到slideshare上。说来我都没注册过slideshare帐号…要放那边么?主要是东西的完成度太低了所以我才没大肆宣传啊啥的 = =
3 楼 花花公子 2011-01-03  
有slideshare链接吗?遇到zip中文名乱码的问题。
2 楼 aabcc 2011-01-03  
あけおめ~(`・ω・´) -

今年继续在这里学习了。
1 楼 lwwin 2011-01-03  
感谢,体积大说明分量组^-^

相关推荐

    深入java虚拟机——applet 演示

    本主题将深入探讨Java虚拟机与Applet之间的关系以及如何进行Applet的演示。 首先,我们需要理解Java虚拟机的工作原理。JVM是一种抽象的计算设备,它执行字节码(.class文件),这是Java源代码经过编译后的中间表示...

    深入JAVA虚拟机第二版+随书代码

    《深入JAVA虚拟机第二版》是一本深受Java开发者喜爱的经典著作,它详尽地剖析了Java虚拟机(JVM)的工作原理,为程序员提供了深入了解Java平台核心技术的机会。这本书结合了理论与实践,不仅讲解了JVM的内部机制,还...

    深入理解Java虚拟机JVM高级特性与最佳实践1

    然而,想要在高并发和高性能场景中充分发挥Java的优势,开发者需要对支撑Java程序运行的虚拟机——Java虚拟机(JVM)有深入的理解。《深入理解Java虚拟机JVM高级特性与最佳实践》一书,正是为解决这一需求而生。 ...

    java虚拟机书籍

    而Java虚拟机(JVM)作为运行Java程序不可或缺的一环,其重要性不言而喻。Java虚拟机不仅负责解释和执行Java字节码,还提供了垃圾回收、内存管理等一系列底层功能,让Java开发者能够专注于业务逻辑的实现,而无需...

    java虚拟机源码-jvm-demo-code:深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)源代码

    《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》是一本深受Java开发者喜爱的经典著作,它详细解析了Java虚拟机的工作原理和优化策略。源代码"jvm-demo-code-master"是该书配套的示例代码,包含了许多关于...

    虚拟机技术简单描述,Java虚拟机

    【Java虚拟机】(JVM)是虚拟机的一种,它是专门为了执行Java字节码而设计的。JVM作为Java编程语言的运行平台,负责解析并执行Java程序的类文件,提供了跨平台的能力,使得Java程序能在任何支持JVM的设备上运行。 ...

    java虚拟机性能监控

    ### Java虚拟机性能监控 #### 一、引言 在当今快速发展的信息技术领域,Java作为最流行的编程语言之一,其虚拟机(Java Virtual Machine, JVM)的性能优化和监控成为了确保应用程序高效稳定运行的关键因素。Java...

    实战Java虚拟机——JVM故障诊断与性能优化

    包括但不限于体系结构、虚拟机的调试方式、常用参数、垃圾回收系统、Class文件结构、执行系统等,力求从多角度更专业地对Java虚拟机进行探讨。  4. 通俗易懂。简单的白话文风格贯穿全书,尽量做到读者在阅读过程中...

    进程调度算法模拟器(java语言)(操作系统课程设计)(一看即懂)(基于MVC模式的Swing界面简单演示)

    进程调度算法模拟器,模拟了3种调度算法 ...(请确保你的电脑装有java虚拟机5.0以上) -------------------------------------- 对线程编程与MVC模式感兴趣的同学可以看看,也可以用于操作系统课程设计.

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...

    解析Java虚拟机器开发:权衡优化、高效和安全的最优方案.pdf

    #### Java虚拟机(JVM)概览 Java虚拟机(JVM)是一种能够执行编译后的Java字节码的虚拟机环境。它提供了运行Java应用程序所需的基础平台,并且在设计上考虑到了跨平台兼容性、性能优化以及安全性等多方面的需求。 #...

    Java虚拟机类装载的原理及实现

    ### Java虚拟机类装载的原理及实现 #### 引言 Java虚拟机(JVM)作为执行Java程序的核心,承担着解释执行字节码的重要任务。在这个过程中,类的装载是一个关键步骤,它确保了Java程序能够正确无误地运行。类装载...

    java 堆栈的演示程序

    Java堆栈是一个重要的内存区域,它是Java虚拟机(JVM)的一部分,主要负责管理方法的执行。在这个"java 堆栈的演示程序"中,我们可能会深入理解堆栈的工作原理以及它在运行jsp程序时的角色。源代码设计将帮助我们...

    java虚拟机源码-JVMInPractice:实战JAVA虚拟机.JVM故障诊断与性能优化.葛一鸣.2015源代码

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。在"JVMInPractice:实战JAVA虚拟机.JVM故障诊断与性能优化.葛一鸣.2015源代码"这个资源中,葛一鸣专家分享了关于JVM的实际...

    JAVA--Beginners-to-see.zip_beginners

    首先,Java语言的核心概念是“Write Once, Run Anywhere”(一次编写,到处运行),这得益于其跨平台的JVM(Java虚拟机)。学习Java,你需要了解JDK(Java Development Kit)——这是编写、编译和运行Java程序的必备...

    ibm_java1.6.0

    它提供了Java虚拟机(JVM)、核心类库和其他必要的运行时组件。 2. **IBM Java演示包** - `java-1.6.0-ibm-demo-1.6.0.16.30-1jpp.i386.rpm` 这个包包含了示例程序和演示应用,用户可以通过它们了解IBM Java的功能...

    Java 语言基础知识教程 PPT演示文稿

    - **平台无关性**:Java的“一次编写,到处运行”特性,得益于Java字节码和Java虚拟机(JVM)。 - **多线程**:Java支持多线程编程,可以同时执行多个任务。 - **动态内存分配**:Java自动管理内存,程序员无需...

    探索Java虚拟机的心脏:字节码执行全解析

    ### 探索Java虚拟机的心脏:字节码执行全解析 #### Java语言概览 Java自1995年由Sun Microsystems(现归Oracle所有)发布以来,已成为全球范围内广泛应用的编程语言。作为一种面向对象的语言,Java将现实世界中的...

    vsphere-automation-sdk-java:使用VMware REST API的vSphere,VMC和NSX-T的Java示例,语言绑定和API参考文档

    适用于Java的VMware vSphere Automation SDK目录抽象本文档介绍了使用vSphere Automation Java客户端库的vSphere Automation Java SDK示例。 此外,一些示例还演示了vSphere Automation和vSphere Web Service API的...

Global site tag (gtag.js) - Google Analytics