随笔分类 - Java
摘要:我在写这篇文章之前,我对Java内部类也不是很清楚,只知道简单的应用。前几天有个朋友问我怎么理解Java内部类,我当时就有点傻了,想了半天也没有说出来,我想,如果让大家来回答这个问题,大家该怎么回答呢?我估计,总有一些人回答不上来的,或者说回答的不够完整。我特意查了查,自己又总结了总结,在这给大家分享一下。 在说之前,我先列出几个问题: 1.外部类(非主类)通过怎样的方式访问内部类? 2.内部类能不能访问主类私有的属性,为什么? 3.内部类能不能继承别的类和接口? 4.内部类能不能是static的? 5.在主类的方法里面可不可以定义内部类? 6.初
阅读全文
摘要:这是最后一篇有关内存管理的文章,其实内存管理有许多技巧和方式,在这,我给大家介绍一下。 (1)要尽早的释放无用对象的引用。如果,该对象不用了,你可以把它设置为null。但要注意,如果该对象是某方法的返回值,千万不要这样处理,否则你从该方法中得到的返回值永远为空,而且这种错误不易被发现,因此这时很难及时抓住、排除NullPointerException异常。(2)尽量少用finalize函数。因为它会加大GC的工作量,因此尽量少用finalize方式回收资源。 (3)如果需要使用经常用到的图片,可以使用soft应用类型(也就是转换为软引用类型),它可以尽可能将图片保存在内存中,供程序调用,而不
阅读全文
摘要:我们知道类中的静态变量在程序运行期间,其内存空间对所有该类的对象实例而言是共享的,为了节省系统内存开销、共享资源,应该将一些变量声明为静态变量。通过下面的例子,你就会发现有什么不同。代码一:[代码]代码二:[代码]我想大家应该发现上面那两个类的区别了吧!代码一会在内存中保存20000个weeks的副本,而代码二则在内存中保存1个weeks的副本,然后共享该副本,这样的话就不会造成内存的浪费。虽然静态的变量能节约大量的内存,但是并不是所有的地方都适合用,建议大家在下列条件都符合的情况下,尽量用静态变量:(1)变量所包含的对象体积较大,占用内存较多。(2)变量所包含的对象生命周期较长。(3)变量所
阅读全文
摘要:上次说到了JVM的垃圾回收机制和JVM中对象的生命周期,今天给大家讲个方法,叫做析构方法finalize,我想搞过C++的人都知道,而且是内存管理技术中相当重要的一部分。但是,在Java中好像没有这个概念,这是因为,理论上JVM负责对象的析构(销毁与回收)工作,finalize是Object类中的一个方法,并且是protected,由于所有的类都继承了Object对象,因此,就都隐式的继承了改方法,不过可以重写这个方法,如果重写此方法,最后一句必须写上super.finalize()语句,因为finalize方法没有自动实现递归调用。那我们在什么时候要重写它呢?当有一些不容易控制并且非常重要的
阅读全文
摘要:最近在看Java优化这方面的书,那必然会涉及到内存管理,我想和大家共同提高,于是写出来,如果有问题,希望能提出来,共同进步嘛!呵呵,不说这些了,好,现在开始你的知识之旅吧! 在做Java开发的时候常用的JVM内存管理有两种,一种是堆内存,一种是栈内存。堆内存主要用来存储程序在运行时创建或实例化的对象与变量,例如:我们通过new MyClass()创建的类MyClass的对象。而栈内存则是用来存储程序代码中声明为静态(或非静态)的方法。下面我给大家举个例子:代码就拿上面的例子来说,放在栈内存中的有:main,makeThings,放在堆内存中有:Test,list,object。JVM中对象的生
阅读全文

浙公网安备 33010602011771号