首页 > 解决方案 > 内存泄漏 - 服务调用静态方法

问题描述

我对我的 Java 代码中的内存泄漏有疑问:

我有一个每秒运行的服务(在生产中它每分钟运行一次)当我运行 Android Studio Memory-Profiler 时,我可以看到每次执行此代码时,“分配的内存”值都会增加6. 所以我猜这段代码泄露了?显然它韭菜很慢,但我想知道那个代码有什么问题?我能做些什么来解决这个问题?或者这是“正常”的行为?

在此处输入图像描述

同步服务.java

public class SyncService extends Service {
@Override
public void onCreate() {
    Context context = getApplicationContext();

    new Timer().scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {

            if(!Helper.isNetworkAvailable(context)){
                Log.i(TAG, "Offline");
                return;
            }

            // ...
        }

    }, 1000, 1000);
}

}

助手.java

public class Helper {
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager
                = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }
}

如果我注释掉Helper.isNetworkAvailable(context)对分配值的调用保持静止。

标签: javaandroidmemory-leaksprofiler

解决方案


推荐阅读