4 .JVM(运行时数据区域(与JMM的区别),GC root,新生代垃圾回收算法,老年代垃圾回收算法,新生代又分什么,垃圾回收机器(CMS,G1),类加载机制(双亲委派等等))--深入理解Java虚拟机 JVM(java虚拟机模型):包括java虚拟机栈,java堆,本低方法栈,程序计数器,方法区 JMM(java内存模型),主要是为了规定线程和内存之间的关系,系统存在一个主内存中,Java所有的变量都存在主存中,对于所有的线程都是共享的,线程对变量的操作都在各自的工作内存中进行,线程之间无法进行通信,变量传递需要通过主内存进行。个人认为,JMM就像是一个接口,提供了规范,JVM实现了这个接口。 GC(垃圾回收)是Java核心之一,判断什么样的对象才被GC主要有两种算法,引用计数法和标记-清除算法。 引用计数法是每个对象都有一个引用计数,当对象被创建的时,给对象的计数设置为1,当对象被引用时,计数加一,引用失效,计数减一,当计数器为0的对象就是不会被使用,就会被GC回收,这样效率很高,但是造成一个问题就是当对象循环引用的时候,计数器不会为0,对象就不会被销毁。 可达性分析:把所有的引用关系看成一张图,从一个节点GC root开始,向下开始寻找对应的引用节点,找到这个节点,继续向下寻找这个节点的引用节点,当所有的引用寻找结束后,剩余的节点就是没有被引用到的节点。 可以作为GC root节点的有:  虚拟机栈引用的对象  方法区中静态属性引用的对象  方法区中常量引用的对象  本地方法栈中引用的对象。
点赞 评论

相关推荐

牛客网
牛客企业服务