JVM
文章平均质量分 95
一枚coin
这个作者很懒,什么都没留下…
展开
-
JVM执行引擎
解释器:当Java虚拟机启动时会根据预定义的规范对字节码采用逐行解释的方式执行,将每条字节码文件中的内容“翻译”为对应平台的本地机器指令执行。JIT(Just In Time Compiler)编译器:就是虚拟机将源代码直接编译成和本地机器平台相关的机器语言。原创 2024-04-16 00:30:00 · 1598 阅读 · 0 评论 -
字符串常量池(StringTable)
String:字符串,使用一对""引起来表示String声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。String实现了Comparable接口:表示string可以比较大小String在jdk8及以前内部定义了final char[] value用于存储字符串数据。JDK9时改为byte[]String:代表不可变的字符序列。简称:不可变性。当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。原创 2024-04-15 00:30:00 · 1185 阅读 · 0 评论 -
对象实例化
意思是所有用过的内存在一边,空闲的内存放另外一边,中间放着一个指针作为分界点的指示器,分配内存就仅仅是把指针指向空闲那边挪动一段与对象大小相等的距离罢了。意思是虚拟机维护了一个列表,记录上那些内存块是可用的,再分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的内容。将对象的所属类(即类的元数据信息)、对象的HashCode和对象的GC信息、锁信息等数据存储在对象的对象头中。直接指针是局部变量表中的引用,直接指向堆中的实例,在对象实例中有类型指针,指向的是方法区中的对象类型数据。原创 2024-04-14 00:45:00 · 1050 阅读 · 0 评论 -
运行时数据区
①. -XX:+PrintFlagsInitial : 查看所有的参数的默认初始值②. -XX:+PrintFlagsFinal : 查看所有的参数的最终值(可能会存在修改(:表示修改了),不再是初始值)③. 具体查看某个参数的指令: (jps:查看当前运行中的进程 jinfo -flag SurvivorRatio 进程id)④. -Xms:初始堆空间内存 (默认为物理内存的1/64)⑤. -Xmx:最大堆空间内存(默认为物理内存的1/4)⑥. -Xmn:设置新生代的大小。(初始值及最大值)原创 2024-04-13 19:42:37 · 1175 阅读 · 0 评论 -
类加载子系统
按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:类的加载(装载)、链接(验证、准备、解析)、初始化、使用、卸载。在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,不需要进行类的加载,引用数据类型则需要进行类的加载。当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载、类的链接、类的初始化这三个步骤来对类进行初始化。原创 2024-04-12 14:13:44 · 1033 阅读 · 0 评论 -
垃圾回收:垃圾回收器
垃圾收集器分类作用位置使用算法特点适用场景Serial串行运行作用于新生代复制算法响应速度优先适用于单CPU环境下的client模式ParNew并行运行作用于新生代复制算法响应速度优先多CPU环境Server模式下与CMS配合使用Parallel并行运行作用于新生代复制算法吞吐量优先适用于后台运算而不需要太多交互的场景Serial Old串行运行作用于老年代标记-压缩算法响应速度优先适用于单CPU环境下的Client模式并行运行作用于老年代。原创 2024-03-23 20:16:08 · 1203 阅读 · 0 评论 -
垃圾回收-垃圾回收中的相关概念
(2) 代码中创建了大量大对象,并且长时间不能被垃圾收集器收集(存在被引用) 对于老版本的Oracle JDK,因为永久代的大小是有限的,并且JVM对永久代垃圾回收(如,常量池回收、卸载不再需要的类型)非常不积极,所以当我们不断添加新类型的时候,永久代出现OutOfMemoryError也非常多见,尤其是在运行时存在大量动态类型生成的场合;当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象后,将这个虚引用加入引用队列,以通知应用程序对象的回收情况。内有多个线程在同一个处理器上执行的能力。原创 2024-03-21 20:59:41 · 951 阅读 · 0 评论 -
垃圾回收-垃圾回收算法
垃圾回收分为标记阶段和清除阶段。在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。原创 2024-03-20 20:11:53 · 1011 阅读 · 1 评论 -
StringTable(字符串常量池)
String:字符串,使用一对""引起来表示String声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。String实现了Comparable接口:表示string可以比较大小String在jdk8及以前内部定义了final char[] value用于存储字符串数据。JDK9时改为byte[]String:代表不可变的字符序列。简称:不可变性。当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。原创 2024-03-19 20:00:40 · 1224 阅读 · 0 评论