
JVM
文章平均质量分 65
jvm内存模型、垃圾回收算法、垃圾收集器
.小鲤鱼
这个作者很懒,什么都没留下…
展开
-
理解深拷贝与浅拷贝Java
浅拷贝:在拷贝一个对象时,对对象的基本数据类型的成员变量进行拷贝,但对引用类型的成员变量只进行引用的传递,并没有创建一个新的对象,当对引用类型的内容修改会影响被拷贝的对象。 深拷贝:在拷贝一个对象时,除了对基本数据类型的成员变量进行拷贝,对引用类型的成员变量进行拷贝时,创建一个新的对象来保存引用类型的成员变量。原创 2023-01-31 22:19:29 · 178 阅读 · 0 评论 -
JVM常用参数设置
java虚拟机常用常用设置Xms、Xmn、Xmx、Xss原创 2023-01-01 22:21:41 · 459 阅读 · 0 评论 -
JDK7和JDK8使用串行回收器SerialGC回收对比
和宋红康老师jvm p198讲解的有出入,求指导。原创 2022-12-17 13:57:10 · 130 阅读 · 0 评论 -
垃圾收集器
垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现 。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。原创 2022-12-12 01:10:13 · 149 阅读 · 0 评论 -
垃圾回收相关概念
在JDK 1.2版之后,Java对引用的概念进行了扩充,将引用分为强引用 (strongReference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)4种,弱引用对象与软引用对象的最大不同就在于,当GC在进行回收时,需要通过算法检查是否回收软引用对象,而对于弱引用对象,GC总是进行回收。除强引用外,其他3种引用均可以在iava.lang.ref包中找到它们的身影。原创 2022-12-11 19:33:08 · 131 阅读 · 0 评论 -
垃圾回收相关算法
这些只是基本的算法思路实际GC实现过程要复杂的多,目前还在发展中的前沿GC都是复合算法,并且并行和并发兼备。原创 2022-12-10 22:01:42 · 123 阅读 · 0 评论 -
垃圾回收概述
在程序运行过程中,那些没有引用指向的对象就是需要回收的垃圾。如果不及时回收掉,会造成系统资源的浪费,造成内存泄漏,并且,随着程序的运行,会造成内存溢出OOM原创 2022-12-10 18:45:43 · 164 阅读 · 0 评论 -
String概述
1、String:字符串使用一对””引起来表示。2、String类声明为final的,不可被继承3、String实现了serializable接口:表示字符串是支持序列化的,实现了Comparable接口: 表示String可以比较大小4、String在jdk8及以前内部定义了final char[] value用于存储字符串数据。jdk9时改为byte[]。5、String:代表不可变的字符序列。简称:不可变性。原创 2022-12-08 23:27:53 · 1271 阅读 · 1 评论 -
执行引擎概述
执行引擎在执行的过程中究竟会执行什么样的字节码指令由PC寄存器来决定,每当执行完一项指令操作之后,PC寄存器都会更新下一条指令要执行的指令地址。在方法运行的过程中,执行引擎有可能通过局部变量表中的对象引用准确定位到存储在堆中的对象实例信息,通过对象头中的元数据指针定位到目标对象的类型信息。原创 2022-12-08 14:21:19 · 217 阅读 · 0 评论 -
对象的实例化、内存布局与访问定位
创建对象的6种方式:直接new,Class对象newInstance,Constructor的newInstance、clone()、反序列化、unsfae类原创 2022-12-08 00:09:42 · 128 阅读 · 0 评论 -
方法区概述
方法区(Method Area)与Java堆一样,是各个线程共享的内存区域原创 2022-12-06 22:38:20 · 695 阅读 · 0 评论 -
Java常见的内存泄漏的场景
所谓内存泄漏就是指一个不再被程序使用的对象或变量一直被占据在内存中。原创 2022-12-06 20:14:12 · 680 阅读 · 0 评论 -
堆的核心概述
Java堆区在JVM启动的时候被创建,其大小也就确定好了,是JVM管理的最大的一块内存空间。原创 2022-12-06 00:19:22 · 113 阅读 · 0 评论 -
本地方法栈
java虚拟机栈管理java方法的调用,本地方法栈管理本地方法的调用。原创 2022-12-05 21:26:55 · 271 阅读 · 0 评论 -
本地方法接口
一个Native Method就是一个Java调用非Java代码的接口。本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合 c/C++程序。原创 2022-12-05 21:16:58 · 248 阅读 · 0 评论 -
虚拟机栈概述
由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指今集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 虽然指令集小,但是实现同样的功能需要更多的指令。原创 2022-12-03 23:36:09 · 500 阅读 · 0 评论 -
程序计数器
我们都知道所谓的多线程在一个特定的时间段内只会执行其中某一个线程的方法,CPU会不停地做任务切换,这样必然导致经常中断或恢复,如何保证分毫无差呢?为了能够准确地记录各个线程正在执行的当前字节码指令地址,最好的办法自然是为每一个线程都分配一个PC寄存器,这样一来各个线程之间便可以进行独立计算,从而不会出现相互干扰的情况。由于CPU时间片轮限制,众多线程在并发执行过程中,任何一个确定的时刻,一个处理器或者多核处理器中的一个内核,只会执行某个线程中的一条指令。CPU的寄存器,寄存器存储指令相关的现场信息。原创 2022-12-03 08:15:00 · 1282 阅读 · 0 评论 -
线程之概述
线程是一个程序里的运行单元。JVM允许一个应用有多个线程并行执行。在Hotspot JVM里,每个线程都与操作系统的本地线程直接映射。当一个Java线程准备好执行以后,此时一个操作系统的本地线程也同时创建。Java线程执行终止后,本地线程也会回收。操作系统负责将所有线程安排调度到任何一个可用的CPU上。一旦本地线程初始化成功,它就会调用Java线程中的run()方法。原创 2022-12-02 23:19:34 · 145 阅读 · 0 评论 -
运行时数据区
每个JVM只有一个Runtime实例。即为运行时环境,相当于内存结构的中间的那个框框:运行时环境。原创 2022-12-02 23:12:26 · 216 阅读 · 0 评论 -
双亲委派机制
Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。原创 2022-12-02 08:00:00 · 91 阅读 · 0 评论 -
类加载器分类
类加载器的分类:引导类加载器、扩展类加载器、系统里加载器、用户自定义类加载器。原创 2022-12-01 23:38:44 · 406 阅读 · 0 评论 -
Jvm整体结构
jvm整体结构原创 2022-11-28 10:45:00 · 199 阅读 · 0 评论