jvm1

字节码常量池:

01开头的说明是一个utf-8编码的常量,那么后面就一定要跟两个字节也就是四位16进制的数,来表示这个常量占几个字节,然后后面再跟与这个字节数对应长度的utf-8编码的字符串。之所以一共有三项,这是由01类型,也就是utf-8编码的这个类型在总共12种数据类型中的性质决定的,其他11中类型,第一项是说明是12项中的哪一项,第二项是指向01类型的第几个常量(这个排序在u2类型的计数器中显示),第三项(如果有的话)也是这样的指向。所以说01是根本,是基础,其他的11项都只要一个标志符,再加上一个指向01的序号就可以了。

如上二图,第一张图:开始的两个字节是23==》35,35-1=34个常量。再往后,是07开头的,说明是类名,后面的两个字节值是2,就是指向常量池的第二个常量。再往下,第二个常量就是01开头,表明是utf-8编码的字符常量,01后面的两个字节是字符串的长度:36,所以往后的36位就是一串字符串。以后的码同理。

时间: 2024-10-06 05:35:06

jvm1的相关文章

JVM1.6 GC详解

前言  JVM GC是JVM的内存回收算法,调整JVM GC(Garbage Collection),可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率.但是调整GC是以个极为复杂的过程,所以我们要了解JVM内存组成,回收算法,对象分配机制. JVM 堆内存组成 Java堆由Perm区和Heap区组成,Heap区由Old区和New区(也叫Young区)组成,New区由Eden区.From区和To区(Survivor)组成. Eden区用于存放新生成的

初识jvm-1.Java类的加载机制

转载: jvm系列---纯洁的微笑 地址: http://www.ityouknow.com/jvm.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个类被"首次主

[JVM-1]Java内存模型

Java虚拟机(JVM)内部定义了程序在运行时需要使用到的内存区域 1.线程间共享的内存区域 (1)HEAP  (堆) 大多数应用,堆都是Java虚拟机所管理的内存中最大的一块,它在虚拟机启动时创建,此内存唯一的目的就是存放对象实例.由于现在垃圾收集器采用的基本都是分代收集算法,所以堆还可以细分为新生代和老年代,再细致一点还有Eden区.From Survivior区.To Survivor区,这个后面都会讲到的. (2)METHOD AREA  (方法区) 这块区域用于存储虚拟机加载的类信息.

JAVA虚拟机JVM-1.内存区域

运行时数据区域 包含:程序计数器,java虚拟机栈,本地方法栈,java堆,方法区,运行时常量池.具体相关结构如下图. 区域 是否公用 相关概念 其他描述 程序计数器 线程私有 当前线程执行的字节码行号指示器 如果当前线程执行的java方法,那么计数器 java虚拟机栈 线程私有 java方法执行的线程内存模型 方法执行的时候创建的栈帧用户保存局部变量表,操作数栈,动态链接,方法出口等信息.可能抛出StackOutflowError异常. 本地方法栈 线程私有 本地方法执行的线程内存模型 本地N

Tomcat6.0常用修改操作汇总

1.修改端口Tomcat默认端口为8080,如果需要同时启动多个Tomcat服务,就需要修改新的Tomcat服务的端口以防止冲突:为了同时可以启动更多的Tomcat服务而让端口不冲突,约定下改端口的规范:如果想改为 8081,让如下3个端口分别+1如果想改为 8082,让如下3个端口分别+2 1.1.需要修改的文件:apache-tomcat-6.0.35 8081\conf\server.xml1.2.需要修改的3个端口分别为:8006,8081,8010 <?xml version="

Scala Structural Typing结构类型

鸭子类型:"当看到一只鸟走起来像鸭子.游泳起来像鸭子.叫起来也像鸭子,那么这只鸟就可以被称为鸭子." 一般在动态语言里面才有,因为静态语言是强类型的,会在编译期检查类型,很难实现.但是Scala作为一门static type语言,居然支持,不得不说Scala确实很强大.直接上code package testscala object StructuralTyping extends App { def quacker(duck: {def quack(value: String): S

[从零搭网站五]http网站Tomcat配置web.xml和server.xml

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 上一章我们在CentOS下搭建了Tomcat,但是还是没有跑起来...那么这一章就把最后的配置给大家放上去. 有两种方式:一种是用 rm -f 给这两个文件删掉,再用vim建新的出来.另一种是vim编辑,输入:set nu 显示行号,再输入:1,最后一行的行号d 把全文删掉. 然后再复制粘贴我给你们的配置文件就行. web.xml  , 完全不用修改,直接复制就行了: <?xml version="1.0" encoding=

Spark 编程模型(中)

先在IDEA新建一个maven项目 我这里用的是jdk1.8,选择相应的骨架 这里选择本地在window下安装的maven 新的项目创建成功 我的开始pom.xml文件配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.ap

synchronized与static synchronized 的差别、synchronized在JVM底层的实现原理及Java多线程锁理解

本Blog分为例如以下部分: 第一部分:synchronized与static synchronized 的差别 第二部分:JVM底层又是怎样实现synchronized的 第三部分:Java多线程锁,源码剖析 第一部分:synchronized与static synchronized的差别 1.synchronized与static synchronized 的差别 synchronized是对类的当前实例进行加锁,防止其它线程同一时候訪问该类的该实例的全部synchronized块.注意这里