JVM 初始化阶段例子 final常量】的更多相关文章

1.创建FinalTest类,里面有一个final常量x class FinalTest{ public static final int x = 3; static { System.out.println("FinalTest static block"); } } public class MyTest8 { public static void main(String[] args) { System.out.println(FinalTest.x); } } 然后在Main方…
创建如下Demo package com.example.jvm.classloader; class Parent{ static int a = 3; static { System.out.println("Parent static block"); } } class Child extends Parent{ static int b = 4; static { System.out.println("Child static block"); } }…
1.创建一个Mytest6类和Singleton类 public class MyTest6 { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); System.out.println("counter1:" +Singleton.counter1); System.out.println("counter2:" +Singleton.cou…
[jvm]03-写了final就是常量池了么 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点个赞.加个收藏这对我真的很重要.别下次一定了,都不关注上哪下次一定. gitee目录 博客园目录 视频讲解 上一篇 下一篇 1.jre和jdk的关系 2.运行时数据区域 2.1.程序计数器 它是程序控制流的指示器,分支.循环.跳转.异常处理.线程恢复等基础功能都需要依赖这个计数器来完成 2.2.ja…
JVM的类加载阶段中初始化阶段 P210 虚拟机规定的五种情况必须对类的“初始化”情况 1.遇到new.getstatic.putstatic.或invokestic 四条字节码指令时,如果类没有经过初始化,则需要先触发使其初始化,生成这四条指令的最常见的java代码场景时:使用new关键字实例化对象的时候.读取或设置一个类的静态字段(被final修饰,已在编译器把结果放入常量池的静态字段除外)的时候,以及调用一个类的静态方法的时候. 2.使用java.lang.reflect包的方法对类进行反…
OK,我们接着上篇整理.上篇博客中已经列出的junit的几个核心的类,这里我们开始整理junit完整的生命周期. JUnit 的完整生命周期分为 3 个阶段:初始化阶段.运行阶段和结果捕捉阶段. 这篇这里先来整理下junit的初始化阶段.也就是创建 Testcase 及 TestSuite.先来贴出junit测试框架入口: /** * @创建时间: 2016年1月21日 * @相关参数: @param args * @功能描述: 测试框架入口 */ public static void main…
import导入包 搜索路径 import用于导入包: import ( "fmt" "net/http" "mypkg" ) 编译器会根据上面指定的相对路径去搜索包然后导入,这个相对路径是从GOROOT或GOPATH(workspace)下的src下开始搜索的. 假如go的安装目录为/usr/local/go,也就是说GOROOT=/usr/local/go,而GOPATH环境变量GOPATH=~/mycode:~/mylib,那么要搜索net…
1.都知道SpringMVC项目启动的时候都会初始化一个类:DispatcherServlet,看这个类的源码我们可以发现他其实就是一个servlet, 为什么这么说呢?请看: DispatcherServlet extends FrameworkServletFrameworkServlet extends HttpServletBeanHttpServletBean extends HttpServlet初始化这个DispatcherServlet的时候我们可以看到这个类里面有一个静态代码块…
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script src="./react-0.13.2/build/react.js"></script> <sc…
初始化阶段可以使用的函数:getDefaultProps:只调用一次,实例之间共享引用.只有在组件的第一个实例被初始化的时候,才会调用他,然后react会把这个函数的返回结果保存起来,从第二个实例开始,他们的默认属性都是这同一个结果.实例之间共享引用,在js中有两种类型的数据,一种值类型,比如字符串,布尔值等,一种是引用类型,比如数组,对象等,如果函数返回的是引用类型的数据,那么react会把引用保存起来,在创建不同的实例的时候,他会使用同一个引用当做属性,但是我们知道,引用指向的都是同一个地址…
10.5 Initialization Example初始化的例子 译注:本来想把这个例子全部注释完,但由于对intel汇编实不熟悉,有太多的伪指令,本人也是免强看懂,所以就不再做翻译了. $TITLE ('Initial Task') #此处title为开始标识,$符号表示取地址 NAME INIT #为一段程序命名 init_stack SEGMENT RW #定义栈段 可读写 标识符为init_stack DW DUP(?) #保留20个双字位置 tos LABEL WORD #定义一个标…
openresty开发系列32--openresty执行流程之初始化阶段 一)初始化阶段 1)init_by_lua   init_by_lua_block     init_by_lua_file语法:init_by_lua <lua-script-str>语境:http阶段:loading-config当nginx master进程在加载nginx配置文件时运行指定的lua脚本,通常用来注册lua的全局变量或在服务器启动时预加载lua模块: [root@node5 conf]# cat n…
作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/58c61b4361ff4b005d9e894d 简书:https://www.jianshu.com/u/cb1c3884e6d5 微信公众号:土豆妈的碎碎念(扫码关注,一起吸猫,一起听故事,一起学习前端技术) 欢迎大家扫描微信二维码进入群聊讨论(若二维码失效可添加微信JEmbrace拉你进群): 码字不易,点赞鼓励哟~ 温馨提示 本篇文…
作者:小土豆biubiubiu 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/58c61b4361ff4b005d9e894d 简书:https://www.jianshu.com/u/cb1c3884e6d5 微信公众号:土豆妈的碎碎念(扫码关注,一起吸猫,一起听故事,一起学习前端技术) 欢迎大家扫描微信二维码进入群聊讨论(若二维码失效可添加微信JEmbrace拉你进群) 码字不易,点赞鼓励哟~ 温馨提示 本篇文章…
在学习了前面几节的内容后,相信大家已经对JAVA 虚拟机 加载类的过程有了一个认识和了解,那么本节,我们就继续进一步巩固前面所学知识和特殊点. 一.类的初始化回顾 类在初始化的时候,静态变量的声明语句以及静态代码块都被看作类的初始化语句,Java虚拟机会按照初始化语句在类文件中的先后顺序来依次加载它们. 上图中a的初始化其实经过了四步1.a被初始化为默认值02.a被赋予正确的初始值13.执行静态代码块,将a的值赋为24.执行静态代码块,将a的值赋为4因此最终的执行结果是4,一个类只能被一个Cla…
程序中使用的各种常量用一个类来统一管理,类似: public class AppConst { public static final String STR_1 = "String1"; public static final String STR_2 = "String2"; ...... } 然后在某些逻辑代码段里使用了这些常量.这样做可以便于管理常量,避免了大量的magic number/text,在修改常量内容时只需改这一个类就行了,但有时候会奇怪地发现,重…
- 例: public class Demo{ int x; class A{ static int a = 0; //这样写是不合法的. static final int b=0; //这样写是合法的 } } - java类加载顺序,首先加载类,执行static变量初始化,接下来执行对象的创建,如果我们要执行代码中的变量int a 初始化,那么必须先执行加载外部类,再加载内部类,最后初始化静态变量 a ,问题就出在加载内部类上面,我们可以把内部类看成外部类的非静态成员,它的初始化必须在外部类对…
加载(loading):通过一个特定的名字,找到类或接口的二进制表示,并通过这个二进制表示创建一个类或接口的过程. 链接:是获取类或接口并把它结合到JVM的运行时状态中,以让类或接口可以被执行 初始化:初始化一个类或接口——就是执行这个类或接口的<clinit>方法 运行时常量池(在方法区中) 在类或接口C创建的过程中,根据类或接口C的二进制表示中的常量池来创建运行时常量池. 运行时常量池中有许多运行时常量,运行时常量 有的是符号引用,有的不是符号引用 运行时常量池中所有的引用最初都是符号引用…
* 对于初始化只有主动使用类字段时才会初始化<br> * 除非对一个类的主动引用,否则所有引用类的方式都不会触发其初始化<br> * 主动引用有且只有以下场景:<p> * 遇到new .getstatic.putstatic或invokestatic者四条字节码指令时,如果类没有进行初始化,则需要先触发其初始化. * 对应的JAVA代码场景是 1)new 实例对象.读取或设置一个类的静态字段[被final修饰.已在编译器把结果放入常量池的静态字段除外]时候,以及调用一个…
接上篇的继续 ConstantPool* constant_pool = ConstantPool::allocate(_loader_data, length, CHECK_(nullHandle)); _cp = constant_pool; // save in case of errors constantPoolHandle cp (THREAD, constant_pool); // parsing constant pool entries parse_constant_pool_…
Wifidog是一个linux下开源的认证网关软件,它主要用于配合认证服务器实现无线路由器的认证放行功能. wifidog是一个后台的服务程序,可以通过wdctrl命令对wifidog主程序进行控制. 本文解释wifidog在启动阶段所做的初始化主要工作(代码片段1.1) 初始化配置(先将配置结构体初始化为默认值,在读取配置文件修改配置结构体) 初始化已连接客户端列表(如果是通过wdctrl重启wifidog,将会读取之前wifidog的已连接客户端列表 代码片段1.2 代码片段1.3) 如无特…
AccountConstants.java类 命名:常量类以Constants单词命名结尾 package com.paic.pacz.core.salesmanage.util; import java.util.ArrayList; import java.util.List; public class AccountConstants { /** 保单号 */ public static final String POLICY_NO = "policyNo"; /** 批单号 *…
常量池 主要包括下面2类: 字面量(Literal):如int,double,String等: 符号引用(Symbolic Reference): 符号引用 类和接口的全限定名: 字段的名称和描述符: 方法的名称和描述符: 当虚拟机运行时,需要从常量池中获取对应的符号引用,再在类创建时或运行时解析.翻译到具体的内存地址之中: 常量池的项目类型(常量类型) 常量池中常量项的结构总表 说明: 下图中的tag值即上图中的标志值 解析Class文件指令 javap -verbose xxxx 其中xxx…
start.S |-------------设置cpu状态 |--------------开cache |--------------获得启动方式 |--------------------------------------lowlevel_init | |---------------关看门狗 | |---------------PS_HOLD | |---------------初始化时钟 | |---------------初始化DDR | |---------------初始化uart…
当index=18的时候JVM_CONSTANT_Utf8 case JVM_CONSTANT_Utf8 : { cfs->guarantee_more(2, CHECK); // utf8_length u2 utf8_length = cfs->get_u2_fast(); u1* utf8_buffer = cfs->get_u1_buffer(); assert(utf8_buffer != NULL, "null utf8 buffer"); // Got…
先看bt栈 (gdb) bt #0 ConstantPool::allocate (loader_data=0x7fe21802e868, length=87, __the_thread__=0x7fe21800b800) at /home/atzhang/atzhang/openjdksource/openjdk8/openjdk/hotspot/src/share/vm/oops/constantPool.cpp:47 #1 0x00007fe2206d0bbc in ClassFilePa…
一. 二.代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script src="./jquery-2.1.4.min.js"></script> <sc…
<init>和<clinit> init是对象构造器方法,初始化对象的时候执行 clinit是类构造器方法,类加载的初始化阶段执行 final常量赋值(必须是一下其中一种) 显式赋值 构造参数中赋值<init> 代码块中赋值 static类变量初始化 <clinit>同步方法(static赋语句.static代码块由jvm clinit收集并执行) 接口与类一样都会生成<clinit> 接口与类不同的是,执行接口的<clinit>()…
JVM:类加载与字节码技术-2 说明:这是看了 bilibili 上 黑马程序员 的课程 JVM完整教程 后做的笔记 内容 这部分内容在上一篇笔记中: 类文件结构 字节码指令 编译期处理 类加载阶段 类加载器 运行期优化 3. 编译期处理 所谓的 语法糖 ,其实就是指 java 编译器把 *.java 源码编译为 *.class 字节码的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是 java 编译器给我们的一个额外福利(给糖吃嘛) 注意,以下代码的分析,借助了 javap…
引子:一说到final关键字,相信大家都会立刻想起一些基本的作用,那么我们先稍微用寥寥数行来回顾一下. 一.final关键字的含义 final是Java中的一个保留关键字,它可以标记在成员变量.方法.类以及本地变量上.一旦我们将某个对象声明为了final的,那么我们将不能再改变这个对象的引用了.如果我们尝试将被修饰为final的对象重新赋值,编译器就会报错. 二.用法 1.修饰变量 final修饰在成员变量或者局部变量上,那么我们可以称这个变量是final变量,这可能使我们用到最多的地方,举个栗…