【Java基础】三大特性、双亲委派、JVM内存划分、垃圾回收
- 封装:
封装就是把客观的事物封装成抽象的类,将类不需要外界访问的成员变量和方法私有化,只提供符合开发者意愿的公共方法来访问这些数据和逻辑,保证了数据的安全和程序的稳定。
- 继承:
继承就是让某个类获取另一个类的属性和方法,它可以使用父类所有的非私有功能,可以在不需要重新编写父类的情况下对这些功能进行扩展。
- 多态:
多态是一个类实例的同一个方法,在不同情境下可以有不同的表现形式,多态机制可以使不同内部结构的对象共享相同的接口。
什么是双亲委派模型
类加载器在收到类加载的请求时,不会立即去加载该类,而是将类加载的请求委派给父类加载器去尝试加载,只有在父类加载器反馈无法完成这个加载请求时(它的搜索范围没有找到所需的类),子类加载器才会尝试自己去加载。
JVM内存划分为几个区域
分为5个区域:
- 程序计数器:
记录当前线程执行到的字节码行号。
- 虚拟机栈:
java方法执行的内存模型,存放方法运行时所需要的数据,如局部变量表、操作数栈、动态链接、方法出口等。
- 本地方法栈:
本地方法执行的内存模型,为JVM调用到的Native方法(本地方法)服务。
- 堆:
储存对象实例,GC主要工作区,又分为young区(新生代)和old区(老年代),其中young区又分为Eden和两个survivor区。
- 方法区:
存放运行时的常量、已被虚拟机加载的类信息、常量、静态常量、即时编译器编译后的代码等。
JVM如何判断对象是否可以被回收
如果一个对象到GC Roots没有任何引用链相连,JVM就可以对这些对象进行回收了。
其中GC Roots有哪些:
- Java虚拟机栈引用的对象
- 本地方法栈中引用的对象
- 静态属性引用的对象
- 常量引用的对象
分代垃圾回收器是如何工作的
垃圾回收器主要的管理区域是堆,堆划分为年轻代和老年代,年轻代又被划分为Eden区和两个survivor区,大部分对象在Eden区中生成。
当Eden区空间不足时,触发Minor GC,Eden空间和一个survivor区中存活的对象将被转移到另一个survivor区。移动时存活的对象年龄
加1,当年龄到达指定值时移动到老年代。当老年代空间不足时,触发Full GC,回收整个堆垃圾。

浙公网安备 33010602011771号