1.尽早释放无用对象的引用。
2. 程序进行字符串处理时,尽量避免使用String,应使用StringBuffer
因为每一个String对象都会独立占用内存一块区域,如:
String str = "aaa";
String str2 = "bbb";
String str3 = str + str2;
假如执行此次之后str , str2再不被调用,那么它们就会在内存中等待GC回收,假如程序中存在过多的类似情况就会出现内存错误。
3. 尽量少用静态变量。
因为静态变量是全局的,GC不会回收。
4. 避免集中创建对象尤其是大对象,如果可以的话尽量使用流操作
JVM会突然需要大量内存,这时会触发GC优化系统内存环境;
如下在上传文件前,有如下操作
m_totalBytes = m_request.getContentLength();
m_binArray = new byte[m_totalBytes];
因为m_totalBytes可能得到的数很大,导致数组分配了很多内存空间,而且该数组不能及时释放。
5. 尽量运用对象池技术以提高系统性能
生命周期长的对象拥有生命周期短的对象
时容易引发内存泄漏。
6. 不要在经常调用的方法中创建对象,尤其是忌讳在循环中创建对象。
可以适当的使用hashtable,vector 创建一组对象容器,然后从容器中去取那些对象,而不用每次new之后又丢弃。