本文共 1130 字,大约阅读时间需要 3 分钟。
栈 Stack :存放基本类型的数据和对象的引用..但对象本身不存放在栈中,而是存放在堆中. 一个类的实例消耗大约15字节的内存. 堆 Heap :堆内存用来存放由new 创建的对象和数组.在堆中分配的内存,由Java虚拟机自动垃圾回收来(GC)管理. 静态存储区域 static Filed :Java 在内存中专门划分了一个静态存储区域来管理. 常量池 Constant Pool: 就是该类型所用到的常量的一个有序集合.
Tips: 1,对常量使用 static 修饰符. 2,使用静态方法,静态方法会比普通方法提高 15%左右的访问速度. 3,减少成员变量.可以局部,就不要成员. 4,减少不必要的对象,使用基础类型会比使用对象更加节省资源. 5,尽量不要使用 枚举,少用迭代器 6,对于,Cursor,Receiver,Sensor,File 等对象,注意创建回收,注册和销毁关闭. 7,避免使用 IOC 框架,大量的反射依然会带来性能的下降. 8,使用 RenderScript,OpenGL 来进行非常复杂的绘图操作. 9,使用 SurfaceView 来替代 View 进行大量,频繁的绘图操作.
10,尽量使用视图缓存.而不是每次都执行 inflate().来剖析视图.
Android 还有一些性能优化的方法: ● 首先内存方面,可以参考 Android 堆内存也可自己定义大小 和 优化Dalvik虚拟机的堆内存分配 ● 基础类型上,因为Java没有实际的指针,在敏感运算方面还是要借助NDK来完成。Android 123提示游戏开发者,这点比较有意思的 是Google 推出NDK可能是帮助游戏开发人员,比如OpenGL ES 的支持有明显的改观,本地代码操作图形界面是很必要的。 ● 图形对象优化,这里要说的是Android上的Bitmap对象销毁,可以借助recycle()方法显示让GC回收一个Bitmap对象,通常对一个 不用的Bitmap可以使用下面的方式,如 if(bitmapObject.isRecycled()==false) //如果没有回收 bitmapObject.recycle(); ● 目前系统对动画支持比较弱智对于常规应用的补间过渡效果可以,但是对于游戏而言一般的美工可能习惯了GIF方式的统一处理, 目前Android系统仅能预览GIF的第一帧,可以借助J2ME中通过线程和自己写解析器的方式来读取GIF89格式的资源。 ● 对于大多数Android手机没有过多的物理按键可能我们需要想象下了做好手势识别 GestureDetector 和重力感应来实现操控。通 常我们还要考虑误操作问题的降噪处理。
转载地址:http://cdegi.baihongyu.com/