java内存管理
2015-12-09 09:20
357 查看
今天看了一些关于java内存管理的书。
1、内存管理分为内存分配和内存回收,java虚拟机有自动回收机制,但并不意味着我们在程序中可以肆无忌惮的创建对象,1:是内存减少,降低程序性能;2:大量已分配内存进行垃圾回收,家中垃圾回收负担,降低程序运行性能。
2、类变量和实例变量
类变量初始化分为两步:1、先为类中所有类变量分配内存空间(赋为默认值:int(0),对象(null))2、再依次对类变量进行初始化。
实例变量属于对象,
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内存管理真是一门学问,以后要慢慢学习~~~~
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内存管理真是一门学问,以后要慢慢学习~~~~
相关文章推荐
- Netty概述
- Eclipse常用快捷键的使用
- Unable to open debugger port (localhost:8600): java.io.IOException
- 有关于用java实现ajax的省市联动
- java web开发人员经常使用标签
- Java NIO原理图文分析及代码实现
- eclipse无法查看源码
- 【java基础】java反射机制
- Java NIO 系列教程
- java读取配置文件的几种方法
- java获取System.out输出内容
- JAVA接口interface
- 在Java的Spring框架的程序中使用JDBC API操作数据库
- SpringMVC向前台传输 JSON数据
- Spring:IOC释义(Bean容器、注解、依赖注入)
- SSHJ:Spring整合Struts2、Hibernate、JBPM4
- ClientAbortException:java.io.IOException
- spring 启动卡死的解决
- Thrift Java实战
- golang通过socket与java通讯