JVM操作码

加载与存储操作码

load --从局部变量加载值到栈上
ldc --从池中加载常量到栈上
store --把值从栈中移走,存到局部变量中
dup --复制栈顶的值
getField --从栈顶对象常量池中得到指定位置的域
putField --把值放入对象在常量池中指定位置的域上

数学运算操作码

add --栈顶端的2个值相加,并把结果存在栈中
sub --栈顶端的2个值相减,并把结果存在栈中
div --栈顶端的2个值相除,并把结果存在栈中
mul --栈顶端的2个值相乖,并把结果存在栈中

执行控制操作码

if --如果符合特定条件,则跳转到特定分支的偏移处
goto --无条件跳转到分支偏移处
jsr --跳到本地子流程中,并把返回地址放到栈中
ret --返回到索引的局部变量所指向的偏移地址
tableswitch --用于实现switch
lookupswitch --用于实现switch

调用操作码

invokestatic --调用一个静态方法
invokevirtual --调用一个‘常规’的实例方法
invokeinterface --调用一个接口方法
invokespecial --调用一个‘特殊’的实例方法(private)
invokedynamic --动态调用,暂不考虑

平台操作操作码

new --为新对象分配内存,类型由指定位置的常量确定
monitorenter --锁住对象
monitorexit --解锁对象

以上部分摘自‘《java程序员修炼之道》 第五章:文件与字节码;5.4字节码’部分内容,详情请查阅原著!这里主要看的是分类,具体详细描述可以参照:http://blog.csdn.net/lm2302293/article/details/6713147,有较为详细的介绍,只是年代有点久远!

说说JVM中的操作码的更多相关文章

  1. 【转】JVM运行原理及JVM中的Stack和Heap的实现过程

    来自: http://blog.csdn.net//u011067360/article/details/46047521 Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’( ...

  2. Java虚拟机:JVM中的Stack和Heap

    简单的了解一下JVM中的栈和堆 在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和 ...

  3. 深入Java虚拟机:JVM中的Stack和Heap

    在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的 ...

  4. 复习Java虚拟机:JVM中的Stack和Heap

    在JVM中,内存分为两个部分,Stack(栈)和Heap(堆).这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题. 一般,JVM的 ...

  5. jvm中的年轻代 老年代 持久代 gc

    虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation).其中持久代主要存放的是Java类的类信 ...

  6. JVM中对象的创建过程

    JVM中对象的创建过程如以下流程图中所示: 对其主要步骤进行详细阐述: 为新生对象分配内存: 内存的分配方式: 指针碰撞:假设Java堆中内存是绝对规整的,所有用过的内存放在一边,空闲的内存在另一边, ...

  7. 浅析JVM中的GC日志

    目录 一.GC日志的格式分析 二.运行时开启GC日志 一.GC日志的格式分析 在讲述GC日志之前,我们先来运行下面这段代码 package com.example; public class Test ...

  8. JVM中的垃圾收集算法和Heap分区简记

    如何判断垃圾对象? 垃圾收集的第一步就是先需要算法来标记哪些是垃圾,然后再对垃圾进行处理.   引用计数(ReferenceCounting)算法 这种方法比较简单直观,FlashPlayer/Pyt ...

  9. 《深入Java虚拟机学习笔记》- 第7章 类型的生命周期/对象在JVM中的生命周期

    一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令 ...

随机推荐

  1. [置顶] apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)

    我使用sudo apt-get update之后,更新失败,遇到如下错误. W: Failed to fetch http://ppa.launchpad.net/jonathonf/python-3 ...

  2. CSRF进阶之打造一个检测CSRF漏洞的脚本

    前言: 还记得之前所学的CSRF漏洞吧.因为没有对表单做好对应的漏洞 而造成的CSRF漏洞.学了这个漏洞后逐渐的了解.这个比较鸡助. 代码: import requests,tqdm,time,os, ...

  3. jquery easy ui 的formatter 格式化函数代码

  4. NFS共享权限问题

    //所有web集群节点的用户统一uid 例如888,用户最好也统一 Apache server: useradd -u 888 -s /sbin/nologin -M www chown -R www ...

  5. leetcode445

    /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNo ...

  6. java获取取前段页面的参数

    request.getParameter("tnumber") document.forms[0].s_id.value;

  7. linux shell find

     find /  -ctime +365 ! -name "*.bat" -exce rm -rf {} \;

  8. 将本地Jar包安装到maven仓库中去

    开发中会遇到无法通过pom.xml下载jar包的情况,遇到这种情况我们可以手动在本地安装jar包到本地仓库中去,这样就可以下次再用到的话不用再次联网下载,具体以oracle的驱动包ojdbc6.jar ...

  9. iOS常用动画 类封装

    //这是一个很好的动画封装类 很容易明白很详细 和大家分享 // CoreAnimationEffect.h // CoreAnimationEffect // // Created by Vince ...

  10. python 数值计算库

    pip install numpy pip install matplotlib pip install sklearn yum -y install tkinter pip install scip ...