随笔分类 - 深入理解JVM
摘要:JVM平台无关性 Java具有平台无关性,也就是任何操作系统都能运行Java代码。之所以能实现这一点,是因为Java运行在虚拟机之上,不同的操作系统都拥有各自的Java虚拟机,因此Java能实现“一次编写,处处运行”。而JVM不仅具有平台无关性,还具有语言无关性。 平台无关性是指不同操作系统都有各自
阅读全文
摘要:1.根搜索算法 1.可达性分析算法 该算法是用来判断一些对象是否存活的,这个算法的起点就是图中的GC Root,,从根开始往下搜索,搜索走过的路径称之为“引用链”,如果一个对象到根节点没有任何一条引用链的话,就说明这个对象是要被回收的。 如图,Object5、Object6、Object7虽然他们互
阅读全文
摘要:运行时数据区域 jvm在执行Java程序时会把他所管理的区域划分为若干个不同的数据区域,这些区域各有各自的用途。 如图: 1.程序计数器 程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。每条线程都有一个独立的程序计数器,各线程之间的计数器互不影响。如果线程在执行一个ja
阅读全文
摘要:我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,C
阅读全文
摘要:加载类的开放性 我们在了解双亲委派模型之前,不得不先了解一下什么是类加载器。虚拟机设计团队之初是希望类加载过程“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作能放到虚拟机外部实现,以便于让程序自己决定如何获取该类,实现这个动作的代码的工具成为类加载器。 可能很多人觉得类加载器,顾名思义,
阅读全文
摘要:jvm中内存划分: 如上图,一共分为五块,其中: 线程共享区域为: 1、java堆 2、方法区 线程私有区域为: 3、JVM栈 4、本地方法栈 5、程序计数器 java技术体系中锁提倡的自动内存管理归结为自动化的解决了两个问题: (1)给对象分配内存 (2)回收给对象分配的内存(关于回收算法请另见
阅读全文
摘要:垃圾收集算法 1.标记清除算法 最基础的GC算法是“标记--清除”算法,顾名思义,这个算法分为“标记”和“清除”两个过程:先标记出所有需要被回收的对象,在标记完成后,统一进行回收,之所以叫做最基础的,是因为后续的算法是针对该算法不足的地方进行改进。首先,标记清除是个很繁琐的过程,效率较低,每当进行过
阅读全文

浙公网安备 33010602011771号