面试题:JVM,GC垃圾回收机制
收集了有关Java中GC垃圾回收机制的一些知识点,帮助自己理解。 GC(垃圾收集),那收集回收的是什么呢? 是内存 ,所以在了解垃圾回收机制之前,要对Java内存有一个了解。 一:Java内存 图解: 私有内存区:伴随线程的产生而产生 ,一旦线程终止,私有内存区也会自动消除 程序计数器:指示当前程序执行到了哪一行,执行 Java方法 时记录正在执行的虚拟机 字节码指令地址 ;执行 本地方法 时,计数器值为 null 虚拟机栈:用于执行 Java方法 ,栈帧存储 局部变量表,操作数栈 , 动态链接,方法返回地址 和一些额外的符加信息。程序执行时入栈;执行完成后栈帧出栈。 Java堆:Java虚拟机管理的内存中最大的一块,所有 线程共享 ,几乎 所有的对象实例和数组 都在这里分配内存。GC主要就是在Java堆中进行的。 堆内存又分为:新生代(新生代又分为Eden80%,Survivor20%)和老年代(Old),并且一般新生代的空间比老年代大。 方法区:只有一个方法区共享。实际也是堆,只是用于 存储类 , 常量 相关的信息,来存放程序中永远不变或唯一的内容( 类信息【Class对象】 , 静态变量,字符串常量 等)。但是已经被最新的 JVM 取消了。现在,被加载的类作为元数据加载到底层操作系统的本地内存区。 了解了Java内存,接下来就来了解一下GC原理: 二、垃圾回收机制 一