摘要: 对象的内存布局 我们的对象一般存储在我们的堆内存中,我们把实例对象可以划分为对象头,实例数据,对齐填充 对象头(object header):有两类信息 存储对象自身运行时的数据,如哈希码,GC分代年龄,锁状态,线程持有的锁,偏向线程ID等,将这些数据存储在Mark Word 另一部分存储的是类型指 阅读全文
posted @ 2022-11-18 17:20 刘颂成 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收的垃圾是什么 哪些内存 方法区:存放方法指令,“类” 堆区:存放对象信息 Java调用栈/本地方法调用栈,存放方法中调用的栈帧,局部变量 运行时常量池:类文件的常量池的数据 PC每个线程独有的,存放下一条指令的地址 堆,方法区,运行时常量池是共享的,PC和栈是私有的 对于这样划分逻辑上的区域 阅读全文
posted @ 2022-11-18 12:47 刘颂成 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 五大引用概述 基于可达性算法的垃圾回收 实线是强引用,虚线是其他引用 强引用 只有所有 GC Roots 对象都不通过【强引用】引用该对象,该对象才能被垃圾回收 我们平时用new出来的对象,用一个引用来指向这个对象,这个引用是强引用 软引用 通过GC Root对象强引用了我们的软引用对象,然后用软引 阅读全文
posted @ 2022-11-13 21:23 刘颂成 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 内存结构总览 JVM将执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域 程序计数器(寄存器) 0: getstatic #20 // PrintStream out = System.out; 3: astore_1 // -- 4: aload_1 // out.println( 阅读全文
posted @ 2022-11-12 19:10 刘颂成 阅读(44) 评论(0) 推荐(0) 编辑
摘要: Java是一种强类型的语言 而且我们的Java有一种能够表示任意精度的算数包,通常称为大数,但是他是对象 整型变量 int 基本语法格式 int a=10;//初始化时并赋值 int a; 内存大小 int 大小为4个字节(byte),与操作系统的和JVM的版本无关,像C语言可能就会受到编译器的影响 阅读全文
posted @ 2022-11-01 23:54 刘颂成 阅读(51) 评论(0) 推荐(0) 编辑
摘要: Java是一种强类型的语言 而且我们的Java有一种能够表示任意精度的算数包,通常称为大数,但是他是对象 整型变量 int 基本语法格式 int a=10;//初始化时并赋值 int a; 内存大小 int 大小为4个字节(byte),与操作系统的和JVM的版本无关,像C语言可能就会受到编译器的影响 阅读全文
posted @ 2022-11-01 23:27 刘颂成 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 为什么需要引入字符集 我们知道,我们的电脑必须要存入我们使用的字符,来表达我们的意思,但是我们知道我们的计算机只能存储0 1组成的二进制编码,而二进制编码可以表示一个数字,所以我们用一个数字来表示一个字符,这个数字就是这个字符的唯一ID,也成为码点 这种就叫做我们的字符集 字符集和字符编码的区别 即 阅读全文
posted @ 2022-11-01 19:19 刘颂成 阅读(500) 评论(0) 推荐(0) 编辑
摘要: 简单性 Java语法在设计的时候尽可能接近C++,但是舍弃了一些难以理解和比较少使用的特性,是C++的纯净版,比较容易学习 简单的另一个方面是小,Java的目标之一是支持开发能够在小型机器上独立运行的软件,比如有一个Java微型版,比较适合嵌入式 面对对象 面向过程 优点:性能比面向对象高,因为类调 阅读全文
posted @ 2022-11-01 12:40 刘颂成 阅读(25) 评论(0) 推荐(0) 编辑