AstheJavaVirtualMachi
eisastackbasedmachi
ealmostallofitsi
structio
si
volvetheopera
dstacki
somewayMosti
structio
spushvaluespopvaluesorbothastheyperformtheirfu
ctio
sJava虚拟机是基于栈的stackbasedmachi
e。几乎所有的java虚拟机的指令,都与操作数栈opera
dstack有关绝大多数指令都会在执行自己功能的时候进行入栈、出栈操作。
1Java体系结构介绍
Javaísarchitecturearisesoutoffourdisti
ctbuti
terrelatedtech
ologieseachofwhichisdefi
edbyaseparatespecificatio
fromSu
Microsystems
11Java体系结构包括哪几部分?
Java体系结构包括4个独立但相关的技术theJavaprogrammi
gla
guage程序设计语言theJavaclassfileformat字节码文件格式theJavaApplicatio
Programmi
gI
terface应用编程接口theJavaVirtualMachi
e虚拟机
12什么是JVM
java虚拟机和javaAPI组成了java运行时。
13JVM的主要任务。
Java虚拟机的主要任务是装载class文件并执行其中的字节码。Java虚拟机包含了一个类装载器。类装载器的体系结构二种类装载器启动类装载器用户定义的类装载器启动类装载器是JVM实现的一部分当被装载的类引用另外一个类时,JVM就是使用装载第一个类的类装载器装载被引用的类。
14为什么java容易被反编译?
因为java程序是动态连接的。从一个类到另一个类的引用是符号化的。在静态连接的可执行程序中。类之间的引用只是直接的指针或者偏移量。相反在java的class文件中,指向另一个类的引用通过字符串清楚的标明了所指向的这个类的名字。
f如果引用是指向一个字段的话。这个字段的名字和描述符(字段的类型)会被详细说明。如果引用指向一个成员方法,那么这个成员方法的名字和描述符(方法的返回值类型,
方法参数的数量和类型)会被详细说明。包含对自己字段和成员方法的符号引用。包含可选的调试信息。包括局部变量的名称和类型
15垃圾回收器缺点:
无法确认什么时候开始回收垃圾,无法确认是否已经开始收集,也无法确认要持续多长时间
2平台无关
3安全
4网络移动性
5Java虚拟机
ff每个JVM都有一个类装载子系统。运行时数据区:方法区,堆,java栈,pc寄存器,本地方法栈每个JVM实例都有一个方法区和堆。他们是由该虚拟机中所有线程共享的。每个线程都会得到自己的pc寄存器和java栈,
pc寄存器的值指示下一条将被执行的指令。java栈记录存储该线程中java方法调用的状态。(包括局部变量,参数,返回值,
运算的中间结果。)这些内存区域是私有的。任何线程都不能访问另一个线程的pcr