jvm
文章平均质量分 60
失败的路有很多条,成功的路只有一条:勤奋的认真
不积硅步
纸上得来终觉浅,绝知此事要躬行!
展开
-
jvm的方法区
方法区 存储类信息 存储方法信息 存储域信息 运行时常量池 静态变量 JIT即时编译后得到的代码缓存 类信息 判断是类还是接口 类的全限定名 类的父类的全限定名 类的访问修饰符 类的实现接口 方法信息 方法名 方法的参数的数量和类型 方法的返回值类型 方法的访问修饰符 方法的字节码、操作数栈、局部变量表及其大小 域信息 域(字段)的声明顺序 域的名称、类型、修饰符等 运行时常量池 运行时常量池(Runtime Constant Pool),它是方法区的一部分。Class文件中除了有类的版本、原创 2022-04-15 10:10:46 · 946 阅读 · 0 评论 -
垃圾收集器和常见的垃圾回收算法
文章目录判断对象是否可回收算法引用垃圾回收算法垃圾回收器 判断对象是否可回收算法 java中的垃圾回收主要回收的就是对象,主要是对堆中的没有被引用的对象进行回收,常见的判断一个对象有没有被引用有两种算法: 引用计数器法:对象被引用一次计数器加1,当计数器为0,说明对象没有被引用了 可达性分析法:也叫跟搜索算法,以「GC Roots」的对象作为起始点,往下搜索,形成一个引用链,看看最后能否达到该对象 引用 根据对象的引用强弱,将对象分为下面几种: 强引用: 通过new出来的对象,一般属于强引用 软引用:原创 2022-04-15 09:55:11 · 209 阅读 · 0 评论 -
jvm中的堆
文章目录堆堆的结构堆的内存分配过程 堆 堆主要的作用是给对象分配空间并且存放对象的实例,同时堆是垃圾回收的主要区域,又被称为gc堆 从垃圾回收的角度,堆被分为新生代(minor gc或者younggc)和老年代(major gc或者full gc) 从内存分配的角度看,eden将会划分出一小块空间,用作本地线程分配缓冲区(tlab),每个线程都有自己的tlab,当对象比较小时,直接可以使用tlab给对象分配内存,如果tlab不够,考虑用eden分配,eden不够则直接进入老年代 堆的结构 堆分区主要是因原创 2022-04-13 11:22:29 · 267 阅读 · 0 评论 -
对象创建的过程
对象的创建过程 一般我们遇到new的时候,就代表需要创建实例了,在创建实例之前会在运行时常量池查找是否已经存在这个类的符号引用了、如果这个类的符号引用被加载过,就可以直接使用了,如果没有则执行类加载过程 新对象分配内存空间 都知道对象是在堆中分配的内存空间,分配内存空间有两种方式: 指针碰撞:假设堆中内存是绝对规整的,所有被使用过的内存都被放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离 空闲列表:假设堆中内存不是原创 2022-04-12 11:20:03 · 280 阅读 · 0 评论 -
类加载过程
文章目录java运行过程类加载类加载器 java运行过程 java1.8之后使用元空间代替掉了本地方法区 我们通常编写的是.java的源文件,通过编译器编译后,就会变成一个.class文件,也就是常说的javac编译生成.class文件,jvm是能识别.class文件,它帮我们做了.class文件到机器码文件的转换,相对于常见的高级语言到机器语言的转换,多了一个jvm,但就是因为jvm,jvm帮我们屏蔽掉了操作系统,使得java程序能够跨平台 类加载 类加载分为7个阶段,加载、验证、准备、解析、初始化、使原创 2022-04-12 10:20:47 · 413 阅读 · 0 评论