静态变量 在程序运行期间,类中的静态变量其内存空间对所有该类的实例是共享的,因此在某些时候,为了节省内存空间开销,共享资源, 我们可以将类中的变量声明为静态变量。 但是因为静态变量生命周期太长,并且不易被系统回收,所有如果使用不合理,就会适得其反,从而造成大量内存的浪费。 因此建议在全部符合下列条件的情况下才使用静态变量: (1)变量所包含的对象体积较大,占用内存较多 (2)变量所包含的对象生命周期较长 (3)变量所包含的对象数据稳定 (4)该类的实例 有 对该变量包含对象的共享需求
内存管理的重要性: java语言的性能极大程度上依赖于其运行的硬件环境资源,内存是硬件环境资源中非常重要的一部分,因此,如果开发人员开发的java 应用没能有效合理的使用系统内存,那么这个应用就不可能具备较高的性能。 JVM管理的内存的两种类型: 堆内存(heap)与栈内存(stack) 简单的解释一下堆内存与栈内存,堆内存用来存储程序在运行时创建或实例化的对象与变量; 而栈内存用来存储程序代码中的方法(包括静态方法和非静态方法) 对象的创建阶段: 在创建对象时的几个关键应用规则: (1)避免在循环体中创建对象,即使对象占用的内存空间不大 (2)尽量及时使对象符合垃圾回收标准 (3)不要采用 ...
对象重用所涉及的重要问题,即对象保存。通常将用来缓存对象的应用称为对象池。通过这个途径我们可以大大的提高应用速度, 减少内存需求。对象池通过对其所保存对象的重用和共享,缩减了应用线程反复创建、装载对象所需要的时间,并且也有效的避 免了频繁垃圾回收所带来的庞大的系统开销。 但是这里又存在一个问题,如果长时间的将对象保存在内存中,而这些对象又不经常使用,这样无疑会造成不必要的内存浪费。 或者该对象在内存池中已经遭到破坏,如果不进行及时清理,继续占用系统内存,也是很麻烦的。 总结所存在的问题,在应用对象池技术进行对象重用时,应考虑其必要性并权衡利弊,做出最优选择。如果确定使用对象池技术, 则必须采取 ...
如果有一个很大的数组,并且你已经预料到此数组会变的异常庞大,那么这里给出一个方法用来提高添加新元素的速度,做好初始化操作。 调用ArrayList对象中的ensureCapacity(int size)方法;
在做远程方法调用(RMI)应用开发时,将传递对象中不需要的属性标记为“瞬间值”,使其不被传递,来节约网络开销, 提高传输速度,提高系统性能,并且还可以节约调用端运行环境的内存资源。
线程安全的散列表类: java.util.Vector/java.util.Hashtable 非线程安全的散列表类: java.util.ArrayList/java.util.HashMap 在需要做线程同步以及要求线程安全的场合,开发人员应尽量使用线程安全的散列表类; 在不需要线程安全的场合,为了提高系统性能,开发人员应尽量选用非线程安全的散列表类; 因为线程安全的散列表会将原本可以并行处理的多线程进行排队,将转化为串行处理,从而导致系统性能下降。 ArrayList类可以通过下列方法标识成线程安全的类: List list = Collections.synchronizedList ...
ArrayList(数组对象)与LinkedList(链表对象)是java中的两个专门用来处理数据元素列表的类。 这两个类在性能特性方面存在较大差别,差别源于它们不同的存储结构。 ArrayList是通过内部数据结构Object[]实现的; 而LinkedList是通过将一系列的内部记录连接在一起实现的。 它们性能的差异使它们拥有各自不同的适用场合。 当需要在某个位置添加一个新元素时,应该使用LinkedList来提高系统性能。 因为当在ArrayList的某个位置添加一个新元素时,系统会把此位置之后的所有元素向后推移,这个动作相当耗时。 而在LinkedList的某个位置添加一个新元素时,系 ...
2008-07-21

合租的困惑

关键字: 合租的困惑
最近和朋友在南京秦淮区集庆门那合租了一套两室两厅一厨一卫,其中两厅一厨一卫公用,两间卧室各自私用, 卧室一大一小,大小差距属正常比例,大间有空调、电视、床、大柜子,小间有空调、书橱、写字台、床, 如果房租是1500/月的话,怎样分配房租比较合理?还有房间的柜子是不是都该属于房间主人私用?
前面两篇使用的每个委托都只包含一个方法调用,调用委托的次数与调用方法的次数相同.如果需要调用多个方法,就需要显示的调用多次委托.其实委托可以包含多个方法,这种委托称为多点委托.调用多点委托,就可以按顺序连续调用多个方法. class Program { static void Main(string[] args) { Student s = new Student(); DelStudy ds = new DelStudy(s.study); ds += new ...
举一个整数冒泡排序的例子: /// <summary> /// 整数排序 /// </summary> class SortInt { /// <summary> /// 比较大小 /// </summary> /// <param name="i1"></param> /// <param name="i2"></param> /// <returns></returns> ...
可爱多
搜索本博客
最近加入圈子
存档
最新评论