java 易错点_java面向对象中的易错点

1、通过类的构造方法创建对象

Cat cat = new Cat(),右端的Cat()实际是无参构造方法

2、JVM三个区域

栈区:

stack,方法执行的内存模型,每个方法被调用都会创建一个栈帧,存储局部变量,操作数,方法出口,遵循先进后出原则,JVM为每一个线程创建一个栈区,用于存储方法的信息,比如实际参数,局部变量等,栈属线程私有,不能共享,栈有系统自动分配,在内存中是连续的。

堆区:

heap,用于存储创建好的对象,JVM只有一个堆,被所有的线程共享,是一个不连续的空间

方法区:

method area又叫静态区,被所有线程共享,实际也是堆,只是用于存储类、常量相关的信息,用来存储程序中永远不变或者唯一的信息,比如类信息、静态变量、字符串常量等。

3、关于垃圾回收机制

(1) 什么是java的垃圾回收机制?垃圾回收机制的要点是什么?

垃圾回收机制,garbage collection ,JVM会自行处理清理无效的内存

要点:发现无用的对象,回收无用的对象的内存

(2) 如何确定内存中的哪些对象是垃圾?

方法一:是引用计数,当被引用数字变为0,则表示无用对象

方法二:看是否引用可达,从一个节点开始,寻找对应的节点,找到这个节点之后再继续寻找这个节点的引用节点,当所有的节点寻找完毕之后,剩余的节点就被认为是没有被引用的节点,即是无用的节点。

2. 通用分代垃圾回收详解(年轻代,年老代,持久代)

(1) 垃圾回收机制核心思想是不同生命周期的对象被清理的可能性不同,所以不同生命周期的对象采取不同的回收算法。

年轻代(Eden)

(2) 什么是minorGC,什么是majorGC,什么是fullGC

minorGC负责清理年轻代的内存,采用复制算法,频繁操作

majorGC负责清理年老代的内存

fullGC负责清理年轻代和年老代区域的内存

持久代生命周期与类相关,几乎不清理。

(3) 垃圾回收的过程是什么?

新创建的对象通常会被放在Eden中,当Eden满了(达到一定比例)就会触发minorGC,将无用的对象清理掉,将有用的对象复制到survivor1中,同时清空Eden区

当Eden再次满了,会将S1中不能清空的对象存到另一个survivor 2中,比如S2,同时将S1中有用的对象也复制到S2,保证Eden、S1都被清空。

重复多次(默认15次)survivor中没有被清理的对象,会被复制到old(老年代中)

old中存满达到一定比例,则会触发完整垃圾回收机制(FullGC)

3、创建对象的过程1、 给对象分配内存空间,同时对对象属性进行初始化,初始化默认为0或者null或者false

2、 执行属性值的显示初始化

3、 执行构造方法

4、 返回对象的地址给相关的变量

4、 被static修饰的变量和方法从属于类,没被static修饰的变量和方法从属于对象。

5、静态初始化块的作用是初始化类,加载类的时候执行静态初始化块。

6、如果需要使用不同包下的同名类则详细的列明包的名称,比如Date类

java.util.Date d = new java.util.Date();即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值