03 2019 档案

摘要:解释器与编译器两者各有优势: 当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间,立即执行。在程序运行后,随着时间的推移,编译器逐渐发挥作用,把越来越多的代码编译成本地代码之后,可以获取更高的执行效率。当程序运行环境中内存资源限制较大(如部分嵌入式系统中),可以使用解释执行节约内 阅读全文
posted @ 2019-03-29 18:00 龘人上天 阅读(514) 评论(0) 推荐(0) 编辑
摘要:invokevirtual指令 invokevirtual指令的运行时解析过程大致分为以下几个步骤: 这个过程就是Java语言中方法重写的本质。我们把这种在运行期根据实际类型确定方法执行版本的分派过程称为动态分派。 虚拟方法表 由于动态分派是非常频繁的动作,而且动态分派的方法版本选择过程需要运行时在 阅读全文
posted @ 2019-03-28 09:15 龘人上天 阅读(222) 评论(0) 推荐(0) 编辑
摘要:静态方法会在类加载期就进行解析,而静态方法显然也是可以拥有重载版本的,选择重载版本的过程也是通过静态分派完成的。 //结果 我们把上面代码中的“Human”称为变量的静态类型(Static Type),或者叫做的外观类型(Apparent Type),后面的“Man”则称为变量的实际类型(Actua 阅读全文
posted @ 2019-03-27 17:55 龘人上天 阅读(335) 评论(0) 推荐(0) 编辑
摘要:局部变量表 类变量有两次赋初始值的过程,一次在准备阶段,赋予系统初始值;另外一次在初始化阶段,赋予程序员定义的初始值。 局部变量不像前面介绍的类变量那样存在“准备阶段”,即使在初始化阶段程序员没有为类变量赋值也没有关系,类变量仍然具有一个确定的初始值。但局部变量就不一样,如果一个局部变量定义了但没有 阅读全文
posted @ 2019-03-27 17:50 龘人上天 阅读(106) 评论(0) 推荐(0) 编辑
摘要:定义 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性 阅读全文
posted @ 2019-03-27 14:13 龘人上天 阅读(127) 评论(0) 推荐(0) 编辑
摘要:“加载”是“类加载”(Class Loading)过程的一个阶段, 在加载阶段,虚拟机需要完成以下3件事情:1)通过一个类的全限定名来获取定义此类的二进制字节流。2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3)在内存中生成一个代表这个类的java.lang.Class对象,作为 阅读全文
posted @ 2019-03-26 09:11 龘人上天 阅读(147) 评论(0) 推荐(0) 编辑
摘要:但是对于初始化阶段,虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始):1)遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的 阅读全文
posted @ 2019-03-26 08:38 龘人上天 阅读(210) 评论(0) 推荐(0) 编辑
摘要:jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机各项参数 jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件) jstack(Stack Trace for Java)命令 用于生成虚拟机 阅读全文
posted @ 2019-03-19 08:09 龘人上天 阅读(133) 评论(0) 推荐(0) 编辑
摘要:在JAVA语言中可以作为GC Root的对象包括下面几种: 局部变量表中引用对象 静态属性引用的对象 方法区常量 引用的对象 本地方法栈中(JNI)引用的对象. 永生代中垃圾收集主要回收两部分内容:废弃常量和无用的类. 在大量使用反射、动态代理、CGLib等ByteCode框架、动态生成JSP以及O 阅读全文
posted @ 2019-03-18 17:28 龘人上天 阅读(418) 评论(0) 推荐(0) 编辑
摘要:innodb的锁分两类:lock和latch。 其中latch主要是保证并发线程操作临界资源的正确性,要求时间非常短,所以没有死锁检测机制。latch包括mutex(互斥量)和rwlock(读写锁)。 而lock是面向事务,操作(表、页、行)等对象,用来管理共享资源的并发访问,是有死锁检测机制的。现 阅读全文
posted @ 2019-03-12 10:47 龘人上天 阅读(626) 评论(0) 推荐(0) 编辑
摘要:java 静态变量在编译阶段就已经明确位置, 所以静态变量的声明与初始化在编码顺序上可以颠倒。也就是说可以先编写初始化的代码,再编写声明代码。如: 所以如下代码可以被重读下 阅读全文
posted @ 2019-03-06 14:32 龘人上天 阅读(1402) 评论(0) 推荐(0) 编辑
摘要:转自: http://www.blogjava.net/DLevin/archive/2011/09/13/358497.html 指令从0x00-0xc9 没有0xba 常量入栈指令 指令码 操作码(助记符) 操作数 描述(栈指操作数栈) 0x01 aconst_null null值入栈。 0x0 阅读全文
posted @ 2019-03-06 08:40 龘人上天 阅读(397) 评论(0) 推荐(0) 编辑
摘要:栈帧(Stack Frame) 是用于虚拟机执行时方法调用和方法执行时的数据结构,它是虚拟栈数据区的组成元素。每一个方法从调用到方法返回都对应着一个栈帧入栈出栈的过程。 每一个栈帧在编译程序代码的时候所需要多大的局部变量表,多深的操作数栈都已经决定了,并且写入到方发表的 Code 属性之中,一次一个 阅读全文
posted @ 2019-03-05 14:36 龘人上天 阅读(877) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示