JVM

JVM

成为Java中高级工程师必须掌握的硬核技术之一

关注数:0 文章数:10 访问量:102

       在上一篇博客深入理解JVM—垃圾回收器(GrabageCollector)基础篇我们了解了Java判定一个对象是否为垃圾的两种算法,以及3种垃圾回收算法。如果说收集算法室是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。接下来我们就一起来了解一下常见的垃圾收集器。1、垃圾收集器在G1垃圾出现之前,JVM是对堆内存进行分代管理的,分为新生代和老年代,按照这样的划分,不同分...

1、如何判断对象可以被回收1.1引用计数法       给对象添加一个引用计数器,每当有一个地方引用该对象的时候此计数器+1;当一个引用失效后计数器-1,当计数器的值减为0了的对象就不在可能被使用了。优点:实现简单,判定效率高。缺点:当对象之间的相互循环引用时,会导致GC失效,从而造成内存泄漏。1.2可达性分析算法       以一系列“GCRoots”为起点,从这些对象开始向下搜索,当一个...

一、对象的创建过程(1)判断类是否加载。检查常量池中是否可以定位到指定类的符号引用,并且检查这个符号引用所代表的类时候已经被加载、链接和初始化过。如果可以定位到符号引用,并且已经被加载过:进入第2步如果没法定位到符号引用或没有被加载过:执行相应的类加载过程。(2)分配内存。(指针碰撞:Serial、ParNew/空闲列表:CMS)。(3)初始化零值。为对象中的实例字段赋零值(不是给静态属性赋...

       首先我们来看一道关于字符串的面试题,请大家先不要直接上机运行,自己先在脑子里运行一下这段程序,如果你可以很清晰的得到所有输出,那么恭喜你!这篇文章你就不要在浪费时间再看了;如果你在某一步还有不清楚的,那么这篇文章将会一网打尽所有你对String常量池的疑虑。运行结果:1、StringTable概述       StringTable又可以称为StringPool,字符串常量池,...

1、方法区概述       方法区(MethodArea)和Java堆内存一样是线程共享的一块内存区域,它被主要用来存储已经被虚拟机加载的类信息(字段、方法、构造器的字节码)、常量、静态变量、JIT编译后的代码等等(说的再简单直白点就是用来存储每个已经记载的类的结构信息)。       然而方法区只是JVM规范中定义的一个概念,在具体的虚拟机产品中对于方法区有不同的实现,以Java目前商用最...