Java 虚拟机指令集所支持的数据类型: 在 Java 虚拟机中,实际类型与运算类型之间的映射关系,如下表所示: 加载和存储指令用于将数据从栈帧的局部变量表和操作数栈之间来回传输: 将一个局部变量加载到操作栈的指令包括有:iload、iload_<n>、lload、lload_<n>、fload、f ...
分类:
其他好文 时间:
2016-10-03 17:02:25
阅读次数:
503
1.基础知识。 在x86处理器中:EIP(Instruction Pointer)是指令寄存器,指向处理器下条等待执行的指令地址(代码段内的偏移量),每次执行完相应汇编指令EIP值就会增加。 ESP(Stack Pointer)是堆栈指针寄存器,存放执行函数对应栈帧的栈顶地址(也是系统栈的顶部),且 ...
分类:
其他好文 时间:
2016-09-25 10:43:23
阅读次数:
124
虚拟机每次方法的调用和返回都伴随着栈帧的入栈和出栈,而每个栈帧都包含一个指向运行时常量池中该栈帧所属方法的引用(表明该栈帧执行的是哪个方法),持有这个引用是为了支持方法调用中的动态连接。这些符号引用中一部分会在类加载阶段或者第一次使用的时候转换成直接引用(即在验证、准备、解析的解析阶段,比如说类中的 ...
分类:
编程语言 时间:
2016-09-17 13:27:05
阅读次数:
198
Java虚拟机栈的特征 线程私有 后进先出(LIFO)栈 存储栈帧,支持Java方法的调用、执行和退出 可能出现OutOfMemoryError异常和StackOverflowError异常 Java本地方法栈的特征 线程私有 后进先出(LIFO)栈 作用是支撑Native方法的调用、执行和退出 可 ...
分类:
编程语言 时间:
2016-09-09 23:45:50
阅读次数:
168
java与c++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙。墙外面的人想进去,墙里面的人想出去。 1.java内存分布 程序计数器 栈(局部变量、操作数、动态链接、方法出口) 每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。局部变量所需的内存空间在编译时完成 ...
分类:
编程语言 时间:
2016-09-07 22:26:21
阅读次数:
140
第二节 在上一节我们说到了栈,他在内存中是连续的空间;保存一个个的栈帧,对应一次次方法的调用;还讲到了他是保存对象的引用,那么对象存在哪里呢?我们来看看昨天的一张图: 对象就存在图中的内存区域,在JVM中,那片区域叫做堆! 由图中可以看到堆的存储结构和栈是不同的,堆在内存中并不是一块连续的区域,他是 ...
分类:
其他好文 时间:
2016-08-30 17:29:43
阅读次数:
136
垃圾回收介绍?? Java虚拟机内存划分讲到了Java 内存运行时区域的各个部分,其中程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出有条不紊地执行着出栈...
分类:
编程语言 时间:
2016-08-30 16:04:52
阅读次数:
299
1.枚举根节点 可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中。 可达性分析对执行时间的敏感体现在GC停顿上,因为分析工作必须在能确保一致性的快照中进行,即不可以出现在分析过程中对象引用关系还在不断变化,所以这是导致GC进行时必须停顿所 ...
分类:
编程语言 时间:
2016-08-21 22:46:59
阅读次数:
369
GC需要完成的3件事情: 1.哪些内存需要回收? 2.什么时候回收? 3.如何回收? 哪些内存需要回收? 对于程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈帧随方法的进入和退出执行入栈和出栈的操作。每一个栈帧分配多少内存基本上在类结构确定下来时就已知(运行期JIT编译器会进行一些 ...
分类:
其他好文 时间:
2016-08-21 00:50:43
阅读次数:
147
程序计数器:记录当前线程的执行位置(便于CPU切换线程的时候执行) 虚拟机栈:Java方法,方法从调用到执行完成对应一个栈帧从虚拟机栈入栈到出栈的过程。 本地方法区:Native方法(C++) 方法区:常量(final)、静态变量、类的信息 Java堆:对象的实例 ...
分类:
编程语言 时间:
2016-08-18 21:07:39
阅读次数:
137