首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java进阶训练营 第一周JVM 预习笔记

栈深度stack=2; 局部变量表保留多少个槽locals=2; 方法参数个数args_size=1 无参构造函数个数不是0 对于非静态方法,this将被分配到局部变量表第0号槽 4.6.线程栈与字节码执行模型...putfield将值赋值给实例字段 putstatic将值赋值给静态字段 静态初始化方法 4.9.栈内存操作指令 ?...iconst_1 将常量值1加载到栈里面 dstore 4 将double值保存到本地变量4号槽 静态方法,槽0没有this引用位置。...,检查类层次结构 3)准备 创建静态字段初始化 4)解析 解析常量池,主要有以下四种:类或接口解析、字段解析、类方法解析、接 口方法解析。...比如我要先把a值写到A字段,然后再将b值写到B字段对应内存地址。如果 要严格保障这个顺序,那么就可以在这两个Store指令之间加入一个 #StoreStore 屏障。

32653

Java进阶训练营 第一周JVM 预习笔记

locals=2; 方法参数个数args_size=1 无参构造函数个数不是0 对于非静态方法,this将被分配到局部变量表第0号槽 4.6.线程栈与字节码执行模型 每个线程有自己独有的线程栈...调特殊方法,这里构造函数 dup复制栈顶值 astore {N}或astore_{N}赋值给局部变量 putfield将值赋值给实例字段 putstatic将值赋值给静态字段 静态初始化方法<clinit...javap -c xx.class astore_1 将引用地址值存储到编号1局部变量 iconst_1 将常量值1加载到栈里面 dstore 4 将double值保存到本地变量4号槽 静态方法,...,检查类层次结构 3)准备 创建静态字段初始化 4)解析 解析常量池,主要有以下四种:类或接口解析、字段解析、类方法解析、接 口方法解析。...比如我要先把a值写到A字段,然后再将b值写到B字段对应内存地址。如果 要严格保障这个顺序,那么就可以在这两个Store指令之间加入一个 #StoreStore 屏障。

90700
您找到你想要的搜索结果了吗?
是的
没有找到

总结c++ primernotes

在本书中,我们遵循更为通用用法,即对象是内存具有类型区域。...简化复杂类型定义,使其更易理解。 允许一种类型用于多个目的,同时使得每次使用该类型目的明确。 枚举成员常量 可以为一个或多个枚举成员提供初始值,用来初始化枚举成员值必须是一个常量表达式。...常量表达式是编译器在编译时就能够计算出结果整型表达式。整型字面值常量常量表达式,正如一个通过常量表达式自我初始化const 对象也是常量表达式一样。 枚举成员值可以是不唯一。...用 class 和struct 关键字定义类唯一差别在于默认访问级别:默认情况下,struct 成员为 public,而class 成员为 private。...在实践,大部分编译器在编译时都会用相应常量表达式替换这些 const 变量任何使用。所以,在实践不会有任何存储空间用于存储用常量表达式初始化const 变量。

1.6K90

读完某C++神作,我只记下了100句话

.*/ */ 是错误 表示整数、字符和布尔值算术类型合称为整形。区分类型是因为只有知道某地址值类型,才能知道需要多少表示这个变量和如何解释这些。...预处理器定义调试用常量:__FILE__ __LINE__ __TIME__ __DATE__【打印时间和日期很常用】 assert宏用来检查不可能发生条件。...静态变量只在初次调用时初始化,static size_t ctr=0只执行一次。 内联函数避免函数调用开销:编译时展开为函数体表达式,免去函数调用寄存器保存恢复、复制实参跳转等。...const对象,指针引用只能调用常量成员函数。 没有前缀成员都被假定为this在调用。 默认构造函数按变量初始化规则初始化类中所有成员【内置类型作为局部变量时不初始化】。...非类型形参模板实参:template 实例化时必须是常量表达式 Screen 模板友元表示任何实例可以访问任何实例。模板类可以有模板类成员

1.4K20

SimpleTuning

此阶段只会对类变量进行内存分配,只对类变量进行设置默认值,类赋予值putstatic指令是程序编译后, 存放在类构造器()方法之中,赋值动作将在初始化阶段才会执行。...,这4个命令分别代表实例化一个类、设置&读取一个静态字段(没有被final修饰)、调用类静态方法; 2、使用java.lang.reflect包方法对类进行反射调用时候,如果类没有初始化; 3、当初始化一个类时候...在方法执行时,虚拟机使用局部变量表完成参数值到参数变量列表传递过程,如果执行是实例方法,那局部变量表第0索引Slot默认是用于传递方法所属对象实例引用。...例如,现在3280x86体系处理器中提供了8个32寄存器,而ARM体系CPU(在当前手机、PDA相当流行一种处理器)则提供了16个32通用寄存器。...错误用法:这种用法会导致调用方线程一直被阻塞,直到服务端监听句柄关闭。 ◎ 初始化 Netty 服务端。 ◎ 同步阻塞等待服务端端口关闭。 ◎ 释放 I/O 线程资源和句柄等。

45320

【基本功】Java魔法类:Unsafe应用解析

如下图所示,AtomicInteger实现静态字段valueOffset即为字段value内存偏移地址,valueOffset值在AtomicInteger初始化时,在静态代码块通过Unsafe...Class相关 此部分主要提供Class和它静态字段操作相关方法,包含静态字段内存定位、定义类、定义匿名类、检验&确保初始化等。...//获取给定静态字段内存地址偏移量,这个值对于给定字段是唯一且固定不变 public native long staticFieldOffset(Field f); //获取一个静态给定字段对象指针...、及静态方法lambda$main$0(实现了Lambda表达式字符串打印逻辑)等。...其中,accept方法通过调用Test类静态方法lambda$main$0来实现Lambda表达式定义逻辑。

77020

jvm类和对象定义存储基础知识

符号引用:常量池中类、字段常量字符串表示方式 类和接口解析举例:假如类A引用了类B,加载阶段是静态解析,这时候B还没有被放到JVM内存,这时候A引用只是代表B符号,这是符号引用。...,转换完成后将通过表达式引擎解析表达式并取得正确值,通过事件解析引擎解析用户自定义事件并完成事件绑定,完成解析赋值以及事件绑定后进行视图渲染,最终将目 初始化,为类静态变量赋予正确初始值,JVM...对象初始化 图15 4.1 初始化对象前检查 jvm碰到一个new指令,首先判断改指令指向常量类全名是否被加载、解析初始化过,如果没有则进行类加载,参考类文件加载。...4.3 初始化0值 内存分配完成后,虚拟机需要将分配到内存空间都初始化为零值(不包括对象头),这一步操作保证了对象实例字段在 Java 代码可以不赋初始值就直接使用,程序能访问到这些字段数据类型所对应零值...,转换完成后将通过表达式引擎解析表达式并取得正确值,通过事件解析引擎解析用户自定义事件并完成事件绑定,完成解析赋值以及事件绑定后进行视图渲染,最终将目 7.1 文件常量池 类加载后,类字段

20310

Java关键字和保留字

可以在声明 protected 类、方法或字段类、同一个包其他任何类以及任何子类(无论子类是在哪个包声明引用这些类、方法或字段。...static方法与非static方法:不能在静态方法访问非静态成员变量;可以在静态方法访问静态成员变量。...可以在非静态方法访问静态成员变量:因为静态方法可以直接用类名来调用,而非静态成员变量是在创建对象实例时才为变量分配内存和初始化变量值。...条件表达式后面必须有分号。 5) while 循环 while 关键字用于指定一个只要条件为真就会重复循环。 6) if 如果 if 关键字指示有条件地执行代码块。条件计算结果必须是布尔值。...如果 Java 源文件不包含 package 语句,在该文件定义类将位于“默认包”。请注意,不能从非默认类引用默认类。

93030

C++复习笔记——C++ 关键字

private private(私有的),C++ 访问控制符。被标明为 private字段只能在本类以及友元访问。 true true(真的),C++ 基本数据结构bool类型值之一。...protected protected(受保护),C++ 访问控制符。被标明为 protected字段只能在本类以及其继承类和友元访问。...inline函数一般由短小语句组成,可以提高程序效率。 static static(静态静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为 0,使用时可改变其值。...类静态成员变量必须在声明它文件范围内进行初始化才能使用,private类型也不例外。...只能用于类静态和非常量数据成员。由于一个对象状态由该对象静态数据成员决定,所以随着数据成员改变,对像状态也会随之发生变化。

1.3K30

【深入浅出C#】章节 2:数据类型和变量:变量和常量声明和初始化

对于实例变量和静态变量,可以在声明时使用默认值进行初始化,也可以在构造函数或静态构造函数中进行赋值操作。...而类成员变量在声明时若未显式初始化,会被赋予其对应类型默认值。...常量值不能改变: 一旦常量被赋予了初始值,其值就不能在程序执行过程更改。任何试图更改常量操作都会导致编译错误。 常量静态常量属于类成员,因此可以在类内部任何位置声明。...它们可以用于类方法、构造函数或类任何其他成员常量静态,意味着可以在类实例之间共享。 常量表达式常量值必须在编译时确定,并且只能使用常量表达式初始化。...常量表达式是在编译时求值表达式,它可以是一个常量、一个字面值或一个由常量和基本运算符组成表达式

38020

Java小白成长记 · 第 1 篇《万物皆对象》

静态存储(Static Storage):存放静态成员(static)包括静态成员变量和静态成员方法(类方法) 6)?...这个测试将不能通过编译, 其原因是整数表达式 x = 0 不能转换为布尔值。...代码示例: data.i = 47; data.d = 1.1; data.b = false; ③ 基本类型默认值 如果类成员变量(字段)是基本类型,那么在类初始化时,这些类型将会被赋予一个初始值...注意:这些默认值仅在 Java 初始化时候才会被赋予。这种方式确保了基本类型字段始终能被初始化,从而减少了 bug 来源。但是,这些初始值对于程序来说并不一定是合法或者正确。...所以,为了安全,我们最好始终显式地初始化变量。 这种默认赋予并不适用于局部变量 —— 那些不属于类字段变量。

41420

Java | 字段(Field)

也可在访问修饰符之后添加其他修饰符: 若添加 final 修饰符,则表示该字段值在初始化后保持不变,即它只接受首次分配给它值,之后在其生命期内无法改变,类似于常量,可作为对字段一种限定和保护。...如前面示例 CONSTANT_FIELD 字段静态字段(Static Field):声明为 static 字段常量字段和类变量都属于静态字段。...非静态字段(Non-Static Field):没有声明为 static 字段。又可称为实例变量。 成员变量(Member Variable):除常量字段其他所有字段。...如前面示例 name 字段。 类变量(Class Variable):声明为 static 成员变量,它属于静态字段。如前面示例 sharedField 字段。...引用静态字段 由于静态字段与对象创建无关,所以在访问它时,使用类名或相关表达式,然后是点(.)操作符,然后是静态字段简单名称: System.out.println(MyField.CONSTANT_FIELD

2.5K10

​面试常问16个C语言问题,你能答上来几个?

:不能以分号结束,括号使用,等等) 懂得预处理器将为你计算常数表达式值,因此,直接写出你是如何计算一年有多少秒而不是计算出实际值,是更清晰而没有代价。...意识到这个表达式将使一个16整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数 如果你在你表达式中用到UL(表示无符号长整型),那么你有了一个好起点。记住,第一印象很重要。...------------------------------------------- 在C++static关键字除了具有C作用还有在类使用在类,static可以用来修饰静态数据成员静态成员方法静态数据成员...(1)静态数据成员可以实现多个对象之间数据共享,它是类所有对象共享成员,它在内存只占一份空间,如果改变它值,则各对象这个数据成员值都被改变。...(3)静态数据成员可以被初始化,但是只能在类体外进行初始化,若为对静态数据成员赋初值,则编译器会自动为其初始化为0 C语言学习资源汇总【最新版】 (4)静态数据成员既可以通过对象名引用,也可以通过类名引用

99020

盘点历届 Java 语言关键字,一定有你不认识

可以在声明 protected 类、方法或字段类、同一个包其他任何类以及任何子类(无论子类是在哪个包声明引用这些类、方法或字段。...在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java编译器以及运行环境在对浮点运算表达式是采取一种近似于我行我素行为来完成这些操作,以致于得到结果往往无法令人满意。...static方法与非static方法:不能在静态方法访问非静态成员变量;可以在静态方法访问静态成员变量。...可以在非静态方法访问静态成员变量:因为静态方法可以直接用类名来调用,而非静态成员变量是在创建对象实例时才为变量分配内存和初始化变量值。...如果 Java 源文件不包含 package 语句,在该文件定义类将位于“默认包”。请注意,不能从非默认类引用默认类。

16310

Java-JVM

(); } Version 类初始化时需要对静态常量字段初始化,被 launcher_name 静态常量字段所引用 "java" 字符串字面量就被放入字符串常量池: package sun.misc...字段叫什么名字、被定义为什么数据类型,都是无法固定,只能引用常量池中常量来描述 fields_count(字段计数器),表示当前 class 文件 fields 表成员个数,用两个字节来表示 案例...即当程序创建一个类实例对象。 当 jvm 执行 getstatic 指令时会初始化类。即程序访问类静态变量(不是静态常量常量会被加载到运行时常量池)。...字段访问指令:对象创建后可以通过对象访问指令获取对象实例或数组实例字段或者数组元素 getstatic:从类获取静态字段(static字段/类变量) putstatic: 设置类静态字段值 getfield...方法调用指令 普通调用指令: invokestatic:调用静态方法 invokespecial:调用私有方法、构造器,和父类实例方法或构造器,以及所实现接口默认方法 invokevirtual:

1.1K20

《C++ primer》--第1,2章小结

5、C++,把负值赋给unsigned对象是合法,其结果是该负数对该类型取值个数求模后值,如果把-1赋给8unsigned char 那么结果就是255。...C++每一个变量都有特定类型,该类型决定了变量内存大小和布局、能够存储与该内存取值范围以及可运用在该变量上操作集。     2.C++关键字 ?...1.定义和初始化:枚举定义包括关键字enum,其后是一个枚举类型名。默认第一个枚举成员赋值为0,后面的每个比前一个大1....//input is 0, output is 1, and append is 2 enum open_modes {input,output,append};      2.枚举成员常量:用来初始化枚举成员值必须是一个常量表达式...:头文件可以定义类、值在编译时就已知const对象和inline函数) 一些const对象定义在头文件 16、预处理器简单介绍  1.头文件经常需要其他头文件    2.避免多重包含:预处理器变量名字在程序必须是唯一

865100

【C#学习笔记之一】C#关键字

密封类关键字,密封类不能被继承(不想让其它类继承可以声明为密封类) static 静态成员关键字,静态成员可以直接通过类来调用(在动静态调用都可以),动态成员必需通过对象来调用 unsafe 声明不安全上下文...const 指定无法修改字段或局部变量值。声明常量关键字 event 声明事件。...密封类关键字,密封类不能被继承(不想让其它类继承可以声明为密封类) static 静态成员关键字,静态成员可以直接通过类来调用(在动静态调用都可以),动态成员必需通过对象来调用...volatile 修饰符通常用于由多个线程访问但不使用 lock 语句对访问进行序列化字段。 语句关键字(C# 参考) 语句是程序指令。...let 引入一个用于存储查询表达式表达式结果范围变量。 in join 子句中上下文关键字。 on join 子句中上下文关键字。 equals join 子句中上下文关键字。

2.4K50

听GPT 讲Rust源代码--compiler(46)

在生成静态变量初始化代码时,使用codegen_static_initializer方法,确保静态变量在程序执行之前被正确初始化。...其中最重要方法是codegen_static,用于生成静态数据代码。该方法接收静态变量IR表示和IR上下文,生成将静态数据初始化和加载到内存代码。...InlineAsmOperandRef枚举定义了内联汇编指令操作数引用类型。这些操作数可以是寄存器、内存地址、立即数或标号等。该枚举包括了不同类型操作数引用,以及每种类型特定字段。...Constant:表示一个常量值,例如整数、浮点数、布尔值等。 BinaryOp:表示两个操作数之间进行二元运算结果。...通过对常量表达式进行优化可以改善代码性能和执行效率。 该文件包含了多个函数和结构体,用于处理和优化常量表达式。以下是该文件主要功能和结构体: eval_constant函数:对常量表达式求值。

7810

Android逆向开发之smali语言学习

invoke-direct //用于构造方法以及私有方法调用 invoke-static //调用静态方法 invoke-super //调用父类方法 invoke-interface //调用接口方法...:5 如果方法体内含有常量、变量等定义,则需要根据情况增加寄存器个数,数量只要满足需求,保证需要获取值不被后面的赋值冲掉即可,方法有:存入类字段(存入后,寄存器可被重新赋值),或者长期占用一个寄存器...一般指令格式为:[op]-[type](可选)/[宽,默认4] [目标寄存器],[源寄存器](可选),比如:move v1,v2,move-wide/from16 v1,v2 这里也列举一些常用指令...,并结合Smali进行说明: 移位操作: 此类操作常用于赋值 指令 说明 move v1,v2 将v2值移入到v1寄存器(4,支持int型) move/from16 v1,v2 将16v2寄存器值移入到...v1(8)寄存器 move-object/16 v1,v2 将16v2寄存器对象指针移入到v1(16)寄存器 move-result v1 将这个指令上一条指令计算结果,移入到v1寄存器

1.7K30

【C语言】自学终极笔记

动态存储方式主要包括:自动变量+形参等等 程序内存区域: 代码区:函数块 全局数据区:全局变量+静态局部变量【初始值默认为0】+常量 堆区:动态数据,如malloc、free【C语言】或new、delete...复合运算符在基础不太常用,常用为前两类。 条件运算符: 也是三目运算符,用于条件求值(?:)。 逗号运算符: 用于把若干表达式组合成一个表达式(,)。...case常量表达式: case标签值必须是常量。 default语句(可省略): default语句通常放在switch最后,用于处理未匹配到任何case情况。...6.2 一维数组 定义+初始化 int a[10];//a[0]至a[9],共10个 int a[10]={1,2};//整型后面默认0,字符型默认'\0',指针默认NULL int a[0]={0...外部函数(extern【默认】):是指可以被其他文件函数调用函数。 数组做参数在函数内变化,则原数组值也会变。

12410
领券