Java学习第三天第二回合:面向对象2

1.面向对象的内存分析

        <1.>栈(Stack):系统分配的一个连续的内存空间

                方法执行的内存模型,每个方法被调用时都会创建一个栈帧;

                JVM为每个线程创建一个栈;

                栈属于线程私有,不能够被线程间共享;

                存储特性:“先进后出,后进先出”;

        <2.>堆(heap):不连续的内存空间

                用于存储对象和数组;

                JVM只有一个堆,被所有线程共享;

       <3.> 方法区(method area)

                用于存放程序中永远不变或唯一的内容;

                JVM只有一个方法区,被所有线程共享;

2.垃圾回收原理和算法

        <1.>内存管理:主要是对堆中的对象管理

                分配:new关键字赋值;

                释放:对象赋值为null;

        <2.>垃圾回收

                 过程:Ⅰ.发现无用对象;Ⅱ.回收无用对象的内存空间;

                 算法:Ⅰ.引用计数法(缺点:循环引用的无用的无用对象无法识别)

                           Ⅱ.应用可达法(程序把所有的引用关系看作一张图,没有被引用的节点即为无用                                 节点);

        <3.>通用的分代垃圾回收机制

栈内存Eden区Survivor1区Survivor2区Tenured/old区
管理员Minor GCMajor GC/Full GCFull GC

                内存泄露:创建大量无用对象;

                                  静态集合类(HashMap、Vector、List等)的使用(生命周期=应用程序);

                                  各种连接类未关闭(IO、SQL、网络连接等);

                                  释放对象时,没有删除相应的监听器;

3.this和static关键字

        <1.>this:创建好的对象的地址,即代表当前对象;

                Ⅰ.普通方法:调用该方法的对象;

                Ⅱ.构造方法:只想正要初始化的对对象;

                Ⅲ.this调用重载的构造方法时,放于第一行;

                Ⅳ.不能用于static方法中;

        <2.>static:声明静态成员变量;

                Ⅰ.被该类所有实例共享,类被载入时被显式初始化;

                Ⅱ.static成员变量只有一份,被所有对象共享;

                Ⅲ.调用:类名.类属性/方法(不需要实例化);

                Ⅳ.static方法中不可直接访问非static的成员;

                Ⅴ.静态初始化块:构造器用于对象的初始化;静态初始化块用于类的初始化操作;

4.包机制(package)

        <1.>包名:域名倒着写即可,再加上模块名,便于内部管理;

        <2.>写项目要加包,不要使用默认包;

        <3.>JDK中主要包:java.lang;java.awt;java.net;java.io;java.util;

                                

        

                

        

                

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值