zoukankan      html  css  js  c++  java
  • java内存管理

    今天看了一些关于java内存管理的书。

    1、内存管理分为内存分配和内存回收,java虚拟机有自动回收机制,但并不意味着我们在程序中可以肆无忌惮的创建对象,1:是内存减少,降低程序性能;2:大量已分配内存进行垃圾回收,家中垃圾回收负担,降低程序运行性能。

    2、类变量和实例变量

    类变量属于类,jvm在初始化类时对类变量进行初始化,只运行一次。
    class Test{
    static int seg=100;     //1、定义变量时初始化  
    static{
    	name="nihao";   //2、在静态代码中初始化
    }
    
    }


    类变量初始化分为两步:1、先为类中所有类变量分配内存空间(赋为默认值:int(0),对象(null))2、再依次对类变量进行初始化。

    实例变量属于对象,

    class Test{
    int seg=100;            //1、定义变量时初始化  
    {
    	name="nihao";   //2、在非静态代码块中初始化
    }
    public Test(){
    int age=12;     //3、构造函数中初始化
    }
    }
    在编译时,首先是定义变量,赋值初始化是由构造函数完成的。


    3、java的继承:

    class Base{

    int count=1;

    Dispaly(){

    }

    }

    class Derived  extends Base{

    int count=3;

    Dispaly(){

    }

    }

    当 Base base= new Base();

    Derived derived =new Derived();

    Base bd=new Derived();//此时bd.count=1;    dbd.Display()  -->调用子类的方法。

    Derived db1=base;        //db1.count=1; db1.Display()-->调用父类的方法。

    Base bd1=derived;        //XXX汇报异常,父类不能转换成子类,

    总结:子类重写父类的方法,再由子类引用指向父类实例;

    父类引用不能引用子类的实例,因为子类的很多方法可能父类并不存在,这种类型转换是不存在的。


    当变量的编译类型和运行类型不同时,当调用实例变量时,为引用变量的类型;当调用实例方法时,为所引用的实例对象对的方法。(两者处理不同)

    java内存管理真是一门学问,以后要慢慢学习~~~~







  • 相关阅读:
    自己实现 一个 Vue框架,包含了Vue的核心原理
    Vue-Cli 3.0 中配置高德地图的两种方式
    element-ui table 点击某行高亮(修改背景色)
    input type="file"获取文件名方法
    使用 http-proxy-middleware 做转发, post 请求转发失败
    core-js@2 core-js@3报错问题
    VUE判断当前设备是PC还是移动端
    Vue函数式组件 简单实现
    清明节哀悼日网页变黑白色的CSS代码
    Vue实现递归menu
  • 原文地址:https://www.cnblogs.com/yeemi/p/7470164.html
Copyright © 2011-2022 走看看