备战- Java虚拟机

备战- Java虚拟机

 

    试问岭南应不好,却道,此心安处是吾乡。

 

简介:备战- Java虚拟机

一、运行时数据区域

程序计算器、Java 虚拟机栈、本地方法栈、堆、方法区

在Java 运行环境参考链接:https://www.cnblogs.com/taojietaoge/p/10264416.html。

直接内存

在 JDK 1.4 中新引入了 NIO 类,它可以使用 Native 函数库直接分配堆外内存,然后通过 Java 堆里的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在堆内存和堆外内存来回拷贝数据。

二、垃圾收集

垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。

引用计数算法

为对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。

在两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。正是因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法。

 1 public class Test {
 2 
 3     public Object instance = null;
 4 
 5     public static void main(String[] args) {
 6         Test a = new Test();
 7         Test b = new Test();
 8         a.instance = b;
 9         b.instance = a;
10         a = null;
11         b = null;
12         doSomething();
13     }
14 }
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 备战- Java虚拟机