
JVM
文章平均质量分 89
沈建南
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
垃圾回收的相关算法
垃圾回收的相关算法标记阶段——引用计数算法在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,Gc才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡。判断对象存活一般有两种方式:引用计数算法和可达性分析算法引用计数算法(Refer原创 2021-09-28 09:51:57 · 143 阅读 · 0 评论 -
字符串常量池
String TableString的基本特性string :字符书:使用一对""引起来表示。string声明为final的,不可被继承string实现了serializable接口:表示字符串是支持序列化的。实现了comparable接口:表示string可以比较大小string在jdk8及以前内部定义了final char [ ] value用于存储字符串数据。jdk9时改为byte[]String在JDK9中存储方式变更的原因https://openjdk.java.net/jeps原创 2021-09-28 09:51:09 · 205 阅读 · 0 评论 -
运行时数据区
运行时数据区红色的由线程共享,跟jvm的生命周期一致,灰色的由线程私有方法区就是元数据区+jit编译产物区 方法区的概念比较笼统PC寄存器(program counter register)它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;或者,如果原创 2021-09-27 18:37:00 · 75 阅读 · 0 评论 -
JVM方法区
方法区栈、堆、方法区的交互关系方法区的理解The Java Virtual Machine has a method area that is shared among all Java Virtual Machine threads. The method area is analogous to the storage area for compiled code of a conventional language or analogous to the "text" segment in原创 2021-09-27 18:25:29 · 127 阅读 · 0 评论 -
JVM堆空间
堆一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。. Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区( ThreadLocal Allocation Buffer,TLAB)。《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当在运原创 2021-09-27 18:24:16 · 100 阅读 · 0 评论 -
JVM虚拟机栈
虚拟机栈每个 Java 虚拟机线程都有一个私有的Java 虚拟机堆栈,与线程同时创建。Java 虚拟机堆栈存储帧(第2.6 节)。Java 虚拟机堆栈类似于 C 等传统语言的堆栈:它保存局部变量和部分结果,并在方法调用和返回中发挥作用。因为除了推送和弹出帧之外,Java 虚拟机堆栈从不直接操作,所以帧可能被分配到堆上。Java 虚拟机堆栈的内存不需要是连续的。在第一版中的Java ®虚拟机规范,Java虚拟机堆被称为Java堆栈。该规范允许 Java 虚拟机堆栈具有固定大小或根据计算需要动态扩展和收缩原创 2021-09-27 18:21:36 · 141 阅读 · 0 评论 -
类加载器的分类
类加载器的分类JVM支持两种类型的类加载器,分别为引导类加载器(BootstrapClassLoader)和自定义类加载器TUser-Defined ClassLoader) 。从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范却没有这么定义,而是将所有派生于抽象类ClassLoader的类加载器都划分为自定义类加载器。无论类加载器的类型如何划分,在程序中我们最常见的类加载器始终只有3个,如下所示:1.启动类加载器(引导类加载器,BootStrap原创 2021-09-27 18:09:14 · 163 阅读 · 0 评论 -
JVM类的加载过程
JVM类的加载过程1.加载Loading1.1通过一个类的全限定名获取定义此类的二进制字节流1.2将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构1.3在内存中生存一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口2.链接Linking2.1验证(Verify) :目的在于确保Class文件的字节流中包含信息符合当前虚拟机要求,保证被加载类的正确性,不会危害虚拟机自身安全。主要包括四种验证,文件格式验证,元数据验证,字节码验证,符号引用验证原创 2021-09-27 18:07:22 · 349 阅读 · 0 评论