- 浏览: 3052632 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
内容见附件。
这玩儿转成PDF之后愈发巨大,下一版可能不用7-zip压一下都无法传到JavaEye上做附件了呢。
该演示稿的前两版本在关于Java程序的执行的一次分享一帖中可以找到。
这次的更新主要是加了些图,讲解Java程序与JVM的一些“接触面”、整个执行的步骤、HotSpot中的对象布局、线程之类的。还有很多页仍然是空白的没把内容填进去。总之慢慢来吧,还会不定时更新的。
对内容有建议、疑问的都请在这边回复,欢迎拍砖
嗯,另外想提一下:
这组演示稿里从别的地方引用来的图基本上都有给来源的链接或说明,如果写漏了的话请联系我。而多数的图表是我画的。
欢迎转载。转载前如果能先与我联系的话我会很高兴 ^_^
并不期望别人引用了之后也都指明出处是这里,但最低限度请转载者不要声称那些是自己画的。
使用过我这组演示稿中的图片的帖,友情链接:
JVM学习笔记(二)------Java代码编译和执行的整个过程 / JVM学习小结
嗯,共享的就是上个栈帧压了参数的部分,当作是下个栈帧的局部变量区的一部分。
想像一下,如果每个栈帧都是独立的、无交叠的对象,那在栈帧之间交换数据必然涉及拷贝;而当栈帧是在一个连续的空间上分配、栈帧之间有交叠区域的时候,就容易避免参数的冗余拷贝了。
对.NET(CLR的实现)来说,这里提到的共享根本不是问题:CLR里没有解释器,它执行的托管代码都是JIT过的,跟MSIL在概念上指定的只是在表面语义上相同,但实现却很不同。CLR里托管方法所使用的栈帧布局跟MSIL里声明的“概念上的栈帧布局”就完全不一样,调用约定(calling convention)是把头两个在字宽内放得下的参数从ecx/edx传递,其它从左向右压栈传递,并且上一栈帧压栈的部分自然的成为下一栈帧取参数的地方;也就是说栈帧共享空间本来就是很自然的事,在x86上常见的C、C++编译器都生成类似的代码。
没传到slideshare上。说来我都没注册过slideshare帐号…要放那边么?主要是东西的完成度太低了所以我才没大肆宣传啊啥的 = =
没关系,等我想看了,直接向你要
呃…像是栈跟代码的关系,之类的话题的图我是没画的…那个太诡异了 XD
没传到slideshare上。说来我都没注册过slideshare帐号…要放那边么?主要是东西的完成度太低了所以我才没大肆宣传啊啥的 = =
这玩儿转成PDF之后愈发巨大,下一版可能不用7-zip压一下都无法传到JavaEye上做附件了呢。
该演示稿的前两版本在关于Java程序的执行的一次分享一帖中可以找到。
这次的更新主要是加了些图,讲解Java程序与JVM的一些“接触面”、整个执行的步骤、HotSpot中的对象布局、线程之类的。还有很多页仍然是空白的没把内容填进去。总之慢慢来吧,还会不定时更新的。
对内容有建议、疑问的都请在这边回复,欢迎拍砖
嗯,另外想提一下:
这组演示稿里从别的地方引用来的图基本上都有给来源的链接或说明,如果写漏了的话请联系我。而多数的图表是我画的。
欢迎转载。转载前如果能先与我联系的话我会很高兴 ^_^
并不期望别人引用了之后也都指明出处是这里,但最低限度请转载者不要声称那些是自己画的。
使用过我这组演示稿中的图片的帖,友情链接:
JVM学习笔记(二)------Java代码编译和执行的整个过程 / JVM学习小结
- JVM分享20101228.zip (9.4 MB)
- 下载次数: 5608
评论
11 楼
RednaxelaFX
2011-01-07
cajon 写道
啊哈,我理解错了。
你的意思是说,当方法调用的时候,调用方会将参数压栈,然后进行方法调用(地址跳转)。你这里说的“共享”就是被压栈的参数了。
呵呵,我完全理解错意思了。我还以为VM会自动优化方法调用,避免不必要的参数Clone呢。
你的意思是说,当方法调用的时候,调用方会将参数压栈,然后进行方法调用(地址跳转)。你这里说的“共享”就是被压栈的参数了。
呵呵,我完全理解错意思了。我还以为VM会自动优化方法调用,避免不必要的参数Clone呢。
嗯,共享的就是上个栈帧压了参数的部分,当作是下个栈帧的局部变量区的一部分。
想像一下,如果每个栈帧都是独立的、无交叠的对象,那在栈帧之间交换数据必然涉及拷贝;而当栈帧是在一个连续的空间上分配、栈帧之间有交叠区域的时候,就容易避免参数的冗余拷贝了。
对.NET(CLR的实现)来说,这里提到的共享根本不是问题:CLR里没有解释器,它执行的托管代码都是JIT过的,跟MSIL在概念上指定的只是在表面语义上相同,但实现却很不同。CLR里托管方法所使用的栈帧布局跟MSIL里声明的“概念上的栈帧布局”就完全不一样,调用约定(calling convention)是把头两个在字宽内放得下的参数从ecx/edx传递,其它从左向右压栈传递,并且上一栈帧压栈的部分自然的成为下一栈帧取参数的地方;也就是说栈帧共享空间本来就是很自然的事,在x86上常见的C、C++编译器都生成类似的代码。
10 楼
cajon
2011-01-07
啊哈,我理解错了。
你的意思是说,当方法调用的时候,调用方会将参数压栈,然后进行方法调用(地址跳转)。你这里说的“共享”就是被压栈的参数了。
呵呵,我完全理解错意思了。我还以为VM会自动优化方法调用,避免不必要的参数Clone呢。
你的意思是说,当方法调用的时候,调用方会将参数压栈,然后进行方法调用(地址跳转)。你这里说的“共享”就是被压栈的参数了。
呵呵,我完全理解错意思了。我还以为VM会自动优化方法调用,避免不必要的参数Clone呢。
9 楼
cajon
2011-01-07
我看到你在PPT的82页提到:“前后两个栈帧可以共享一部分区域来传递参数。”
这种共享能力是JVM的一种优化呢,还是在Class中每个方法的Code属性中进行了某种标识触发的?
让我想象,这个是很难实现的。
另外,这种优化能力“.NET虚拟机”有没有提供能?
这种共享能力是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
感谢,体积大说明分量组^-^
发表评论
-
The Prehistory of Java, HotSpot and Train
2014-06-02 08:18 0http://cs.gmu.edu/cne/itcore/vi ... -
MSJVM and Sun 1.0.x/1.1.x
2014-05-20 18:50 0当年的survey paper: http://www.sym ... -
Sun JDK1.4.2_28有TieredCompilation
2014-05-12 08:48 0原来以前Sun的JDK 1.4.2 update 28就已经有 ... -
IBM JVM notes (2014 ver)
2014-05-11 07:16 0Sovereign JIT http://publib.bou ... -
class data sharing by Apple
2014-03-28 05:17 0class data sharing is implement ... -
Java 8与静态工具类
2014-03-19 08:43 16290以前要在Java里实现所谓“静态工具类”(static uti ... -
Java 8的default method与method resolution
2014-03-19 02:23 10465先看看下面这个代码例子, interface IFoo { ... -
HotSpot Server VM与Server Class Machine
2014-02-18 13:21 0HotSpot VM历来有Client VM与Server V ... -
Java 8的lambda表达式在OpenJDK8中的实现
2014-02-04 12:08 0三月份JDK8就要发布首发了,现在JDK8 release c ... -
GC stack map与deopt stack map的异同
2014-01-08 09:56 0两者之间不并存在包含关系。它们有交集,但也各自有特别的地方。 ... -
HotSpot Server Compiler与data-flow analysis
2014-01-07 17:41 0http://en.wikipedia.org/wiki/Da ... -
字符串的一般封装方式的内存布局 (1): 元数据与字符串内容,整体还是分离?
2013-11-07 17:44 22408(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局
2013-11-01 12:55 0(Disclaimer:未经许可请 ... -
关于string,内存布局,C++ std::string,CoW
2013-10-30 20:45 0(Disclaimer:未经许可请 ... -
对C语义的for循环的基本代码生成模式
2013-10-19 23:12 21884之前有同学在做龙书(第二版)题目,做到8.4的练习,跟我对答案 ... -
Java的instanceof是如何实现的
2013-09-22 16:57 0Java语言规范,Java SE 7版 http://docs ... -
oop、klass、handle的关系
2013-07-30 17:34 0oopDesc及其子类的实例 oop : oopDesc* ... -
Nashorn各种笔记
2013-07-15 17:03 0http://bits.netbeans.org/netbea ... -
《深入理解Java虚拟机(第二版)》书评
2013-07-08 19:19 0值得推荐的中文Java虚拟机入门书 感谢作者赠与的样书,以下 ... -
豆列:从表到里学习JVM实现
2013-06-13 14:13 48397刚写了个学习JVM用的豆列跟大家分享。 豆列地址:http: ...
相关推荐
本主题将深入探讨Java虚拟机与Applet之间的关系以及如何进行Applet的演示。 首先,我们需要理解Java虚拟机的工作原理。JVM是一种抽象的计算设备,它执行字节码(.class文件),这是Java源代码经过编译后的中间表示...
《深入JAVA虚拟机第二版》是一本深受Java开发者喜爱的经典著作,它详尽地剖析了Java虚拟机(JVM)的工作原理,为程序员提供了深入了解Java平台核心技术的机会。这本书结合了理论与实践,不仅讲解了JVM的内部机制,还...
然而,想要在高并发和高性能场景中充分发挥Java的优势,开发者需要对支撑Java程序运行的虚拟机——Java虚拟机(JVM)有深入的理解。《深入理解Java虚拟机JVM高级特性与最佳实践》一书,正是为解决这一需求而生。 ...
而Java虚拟机(JVM)作为运行Java程序不可或缺的一环,其重要性不言而喻。Java虚拟机不仅负责解释和执行Java字节码,还提供了垃圾回收、内存管理等一系列底层功能,让Java开发者能够专注于业务逻辑的实现,而无需...
《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》是一本深受Java开发者喜爱的经典著作,它详细解析了Java虚拟机的工作原理和优化策略。源代码"jvm-demo-code-master"是该书配套的示例代码,包含了许多关于...
【Java虚拟机】(JVM)是虚拟机的一种,它是专门为了执行Java字节码而设计的。JVM作为Java编程语言的运行平台,负责解析并执行Java程序的类文件,提供了跨平台的能力,使得Java程序能在任何支持JVM的设备上运行。 ...
### Java虚拟机性能监控 #### 一、引言 在当今快速发展的信息技术领域,Java作为最流行的编程语言之一,其虚拟机(Java Virtual Machine, JVM)的性能优化和监控成为了确保应用程序高效稳定运行的关键因素。Java...
包括但不限于体系结构、虚拟机的调试方式、常用参数、垃圾回收系统、Class文件结构、执行系统等,力求从多角度更专业地对Java虚拟机进行探讨。 4. 通俗易懂。简单的白话文风格贯穿全书,尽量做到读者在阅读过程中...
进程调度算法模拟器,模拟了3种调度算法 ...(请确保你的电脑装有java虚拟机5.0以上) -------------------------------------- 对线程编程与MVC模式感兴趣的同学可以看看,也可以用于操作系统课程设计.
深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字) Java序列化和反序列化是Java虚拟机中的一种重要机制,它们可以将Java对象转换为二进制数据,然后...
#### Java虚拟机(JVM)概览 Java虚拟机(JVM)是一种能够执行编译后的Java字节码的虚拟机环境。它提供了运行Java应用程序所需的基础平台,并且在设计上考虑到了跨平台兼容性、性能优化以及安全性等多方面的需求。 #...
### Java虚拟机类装载的原理及实现 #### 引言 Java虚拟机(JVM)作为执行Java程序的核心,承担着解释执行字节码的重要任务。在这个过程中,类的装载是一个关键步骤,它确保了Java程序能够正确无误地运行。类装载...
Java堆栈是一个重要的内存区域,它是Java虚拟机(JVM)的一部分,主要负责管理方法的执行。在这个"java 堆栈的演示程序"中,我们可能会深入理解堆栈的工作原理以及它在运行jsp程序时的角色。源代码设计将帮助我们...
Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。在"JVMInPractice:实战JAVA虚拟机.JVM故障诊断与性能优化.葛一鸣.2015源代码"这个资源中,葛一鸣专家分享了关于JVM的实际...
首先,Java语言的核心概念是“Write Once, Run Anywhere”(一次编写,到处运行),这得益于其跨平台的JVM(Java虚拟机)。学习Java,你需要了解JDK(Java Development Kit)——这是编写、编译和运行Java程序的必备...
它提供了Java虚拟机(JVM)、核心类库和其他必要的运行时组件。 2. **IBM Java演示包** - `java-1.6.0-ibm-demo-1.6.0.16.30-1jpp.i386.rpm` 这个包包含了示例程序和演示应用,用户可以通过它们了解IBM Java的功能...
- **平台无关性**:Java的“一次编写,到处运行”特性,得益于Java字节码和Java虚拟机(JVM)。 - **多线程**:Java支持多线程编程,可以同时执行多个任务。 - **动态内存分配**:Java自动管理内存,程序员无需...
### 探索Java虚拟机的心脏:字节码执行全解析 #### Java语言概览 Java自1995年由Sun Microsystems(现归Oracle所有)发布以来,已成为全球范围内广泛应用的编程语言。作为一种面向对象的语言,Java将现实世界中的...
适用于Java的VMware vSphere Automation SDK目录抽象本文档介绍了使用vSphere Automation Java客户端库的vSphere Automation Java SDK示例。 此外,一些示例还演示了vSphere Automation和vSphere Web Service API的...