1 JVM的内存区域布局java代码的执行步骤有三点java源码文件->编译器->字节码文件字节码文件->JVM->机器码机器码->系统CPU执行JVM执行的字节码需要用类加载来载入;字节码文件可以来自本地文件,可以在网络上获取,也可以实时生成。就是说你可以跳过写java代码阶段,直接生成字节码交由JVM执行其中Java虚拟机栈、程序计数器、Heap、本地方法栈、Me
Java基础学习2一、变量1、变量的本质:2、 三大要素(1)变量名:(2)变量的定义和使用:二、运算符1、赋值运算符2、算术运算符3、关系运算符4、逻辑运算符5、位运算符三、练习四、开发环境 一、变量1、变量的本质:(1)内存中的一个存储空间。 (2)另一种说法:程序运行过程中,其值可以发生改变的量。 (3)每一个变量存储空间是相互独立的。通过内存地址取数据: 1
转载 2023-07-22 20:26:12
66阅读
在class文件中,“常量”是最复杂也最值得关注的内容。   Java是一种动态连接的语言,常量的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值还,还包含一些以文本形式出现的符号引用,比如:   类和接口的全限定名;   字段的名称和描述符;   方法和名称和描述符。   在C语言中,如果一个程序要调用其它库中的函数
javap命令学习了:https://www.cnblogs.com/frinder6/p/5440173.htmljavap命令查看java类的字节码;对于synchronized块,可以显示monitorenter 、monitorexit:监视器进入,获取锁;监视器退出,释放锁; 学习了:https://www.cnblogs.com/beautiful-code/p/6424977.htm
原创 2021-06-03 09:45:25
189阅读
# 如何使用javap命令 ## 1. 简介 在Java开发中,javap命令是一个非常有用的工具,它可以用于查看Java类的字节码信息。通过使用javap命令,我们可以了解一个类的成员变量、方法等的具体实现细节,对于学习和调试Java程序都十分有帮助。 本文将通过以下步骤详细介绍如何使用javap命令。 ## 2. 步骤 首先,我们先来看一下使用javap命令的整个流程。下面是一个简单
原创 2023-08-04 03:10:07
47阅读
问题引出:String s7 = "H";  String s8 = "ello";  String s9 = s7 + s8 -----S9为何是变量。深入浅出java常量 理论          jvm虚拟内存分布:      程序计数器是jvm执行程序的流水线,
转载 2024-07-25 13:16:42
10阅读
常量解析Java字节码常量的内存分配链路oop-klass模型常量的解析原理在字节码文件中,常量的字节码流所在的块区紧跟在魔数和版本号之后,因此JVM在解析完魔数与版本号后就开始解析常量。JVM解析Java类字节码文件的接口:ClassFileParser::parseClassFile(),总体步骤如下:解析魔数–>解析版本号–>解析常量–>解析父类–>解析接
转载 2024-08-23 10:21:13
39阅读
# Java javap 反编译命令没有方法体 在Java开发中,我们经常会遇到需要查看已经编译好的Java类文件的情况。而`javap`命令就是一个非常有用的工具,可以用来反编译Java类文件,查看类的结构和字节码指令等信息。然而,有时候我们会发现使用`javap`命令反编译的结果中并没有方法体,这是为什么呢?本文将对这个问题进行科普解释,并给出相应的代码示例。 ## 为什么会出现没有方法体
原创 2024-04-10 04:27:09
249阅读
在Java的内存分配中,总共3种常量:1.字符串常量(String Constant Pool):1.1:字符串常量在Java内存区域的哪个位置?在JDK6.0及之前版本,字符串常量是放在Perm Gen区(也就是方法区)中;在JDK7.0版本,字符串常量被移到了堆中了。至于为什么移到堆内,大概是由于方法区的内存空间太小了。JDK8以后也还是放在了Heap空间中,并没有已到元空间。1.2
string是java中的字符串。String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。下面介绍java中的String与常量。 1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是nu
转载 2017-03-14 16:30:00
104阅读
2评论
package mooc_6_4;public class IntegerTest { public static void main(String[] args) { Integ
原创 2022-08-03 17:05:15
73阅读
常量:用于管理在编译器被确定并报错在已编译的.CLASS的文件中的一些数据。包括常量与String常量。存在常量池中的数据是唯一的,所以2个相同的字符串常量都是常量池中的同一个常量,他们是== 相等的。 public class StringCom{ public static void main(String[] args) { String s1 = "ok"; String s2 = "ok"; System.out.println((s1 == s2)); //这个是String常量,存在常量池中,所以他们都是同一字符串 String o =
转载 2013-08-20 21:46:00
160阅读
2评论
Constant pool tagsConstant Type Value CONSTANT_Class 7 CONSTANT_Fieldref 9 CONSTANT_Methodref 10 CONSTANT_InterfaceMethodref 11 CONSTANT_String 8 CONSTANT_Integer 3 CONSTANT_Float 4 CONSTANT_Long 5 CONSTANT_Do
原创 2021-08-25 10:32:06
250阅读
Constant pool tagsConstant Type Value CONSTANT_Class 7 CONSTANT_Fieldref
原创 2022-02-15 17:38:43
126阅读
Java中的常量 字符串示例 整型常量、浮点型常量等 java Byte,Short,Integer,Long,Character,Boolean都实现了常量技术 数值类型的常量不可以手动添加常量,程序启动时常量池中的常量就已经确定了, 比如整型常量池中的常量范围: 128~127, By
原创 2021-07-15 18:21:46
196阅读
申明一点:String Pool是对应于在Constant Pool中存储String常量的区域.习惯称为String Pool,也有人称为String Constant Pool.   1. 首先String不属于8种基本数据类型,String是一个对象。     因为对象的默认值是null,所以String的默认值也是null;但它又
转载 2023-11-15 10:38:00
49阅读
1、常量字面量包括:1.文本字符串 2.八种基本类型的值 3.被声明为final的常量等;符号引用包括:1.类和方法的全限定名 2.字段的名称和描述符 3.方法的名称和描述符。2、常量分类类文件常量:又称为静态常量,存储区域在堆中,编译时产生对应的class文件,主要包含字面量和符号引用;运行时常量:存在元数据(Meta Space)空间,JVM运行时,在类加载完成后,将每个class常量
创建String 对象的方式直接通过字符串常量创建String a="a";New一个String对象String a=new String("a");jvm字符串常量字符串的分配和其他对象分配一样,是需要消耗高昂的时间和空间的,JVM为了提高性能和减少内存的开销,在实例化字符串的时候进行了一些优化:使用字符串常量:每当我们创建字符串常量时,JVM会首先检查字符串常量,如果该字符串已经存在
常量: 静态常量:指的是编译时常量,我们不关注 字符串常量:在java8之后放在了堆里 运行时常量:放在了元空间里,元空间放在了主存里(不在堆里了,不占有jvm内存空间)使用字符串常量(也就是当我们用类似String a = “xiaoming”;)。每当我们创建字符串常量时,JVM会首先检查字符串常量,如果该字符串已经存在常量池中,那么就直接返回常量池中的实例引用。如果字符串不存在
学习JVM的时候经常会遇到各种常量,不同版本的JDK它们的存储位置也不同,这篇随笔就整理下几种常见的常量,以JDK1.8为主。先看一张存储示意图,里面涉及1.8和1.6。 常量是存储在方法区中的,比如我们有这样一段代码:public class Demo { public static void main(String[] args) { System.ou
转载 2023-09-07 20:43:46
118阅读
  • 1
  • 2
  • 3
  • 4
  • 5