JVM
文章平均质量分 91
林深时见鹿,
海蓝时见鲸,
梦醒时见你。
可实际,
林深时雾起,
海蓝时浪涌,
梦醒时也许未见鹿,
未见鲸,亦未见你
雪孤城
所念皆星河,所系皆山河
展开
-
JVM垃圾收集算法和垃圾收集器
1.垃圾收集算法 1.1 分代收集理论 目前主流虚拟机的垃圾收集都采用分代收集算法,根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样就可以根据各个年代的特点选择合适的垃圾收集算法。 比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可 以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以一般选择“标记-清除”或“标记-整理”算法进行垃圾收集。 注意,“标记-清除”或“标记-整理”原创 2021-01-30 20:32:35 · 179 阅读 · 0 评论 -
JVM内存分配机制
1. JVM对象创建过程 2. 对象头与指针压缩 3. JVM对象内存分配 4. 逃逸分析、栈上分配、标量替换 5. 对象内存回收机制 6. JVM参数设置例子原创 2021-01-29 15:33:40 · 261 阅读 · 0 评论 -
JVM内存模型
1.总览 根据Java虚拟机规范,Java虚拟机管理的内存将分为下面五大区域 堆(Heap) 栈(Stacks) 方法区 本地方法栈 程序计数器 2.程序计数器 程序计数器是一块很小的内存空间,它是线程私有的,生命周期与线程相同,可以认作为当前线程的行号指示器。 假设当前线程执行到某个方法的第 n 行,此时别的线程抢占到cpu时间去执行别的任务,则当前线程挂起。如果别的线程执行完任务,当前线程恢复执行,当前线程如何确定上次执行是执行到哪里? 靠程序计数器的计数来确定。 总结: 每个线程都需有独立的一原创 2021-01-28 14:13:10 · 145 阅读 · 0 评论 -
类加载机制
1.类加载流程 流程步骤: 加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的 main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的 java.lang.Class对象,作为方法区这个类的各种数据的访问入口 验证:校验字节码文件的正确性 准备:给类的静态变量分配内存,并赋予默认值 解析:将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如 main()方法)替换为指向数据所存内存的指针或句柄等(直接引用),这是所谓的静态链接过 程(类加载期间完原创 2020-12-04 19:50:48 · 164 阅读 · 1 评论