静态变量
在程序运行期间,类中的静态变量其内存空间对所有该类的实例是共享的,因此在某些时候,为了节省内存空间开销,共享资源,
我们可以将类中的变量声明为静态变量。
但是因为静态变量生命周期太长,并且不易被系统回收,所有如果使用不合理,就会适得其反,从而造成大量内存的浪费。
因此建议在全部符合下列条件的情况下才使用静态变量:
(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的某个位置添加一个新元素时,系 ...
最近和朋友在南京秦淮区集庆门那合租了一套两室两厅一厨一卫,其中两厅一厨一卫公用,两间卧室各自私用,
卧室一大一小,大小差距属正常比例,大间有空调、电视、床、大柜子,小间有空调、书橱、写字台、床,
如果房租是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>
...







评论排行榜