Android线程使用不当引起的内存泄露
Android线程使用不当引起的内存泄露
在Android里,Thread使用不当会引起内存泄露,以下是示例
- package com.examples.testAndroid;
- public class ThreadLeaksTest
- {
- myRunnable m_runnable;
- public void test(){
- //OK--1
- m_runnable = new myRunnable();
- new Thread(){
- public void run(){
- ThreadLeaksTest.this.run();
- }
- }.start();
- //OK-1--END
- //OK--2
- m_runnable = new myRunnable();
- new Thread(){
- public void run(){
- ThreadLeaksTest.this.m_runnable.run();
- }
- }.start();
- //OK-2--END
- //OK-3
- new myThread().start();
- //OK-3--END
- //memory leaks-1
- new Thread(new myRunnable()).start();
- //memory leaks-1--END
- //memory leaks-2
- new Thread(){
- public void run(){
- ThreadLeaksTest.this.run();
- }
- }.run();
- //memory leaks-2--END
- //memory leaks-3
- new Thread(){
- public void run(){
- ThreadLeaksTest.this.m_runnable.run();
- }
- }.run();
- //memory leaks-3--END
- }
- private void run(){
- }
- static class myRunnable implements Runnable{
- String[] m_data = new String[10000];
- public void run(){
- m_data = null;
- }
- }
- static class myThread extends Thread{
- String[] m_data = new String[10000];
- public void run(){
- m_data = null;
- }
- }
- }
评论暂时关闭