首页 > 解决方案 > 在 SharedPreferance 中使用静态最终变量会导致内存泄漏?

问题描述

我正在使用静态最终字符串来引用 Sharedpreference 值,如下所示:

public class Constants {
    public static final String KEYCODE_HELP = "keycode_help";
}

并像这样使用它:

SharedPreferences.Editor editor = sharedpreferences.edit();
//put
editor.putInt(Constants.KEYCODE_HELP, 1);
//get
editor.getint(Constants.KEYCODE_HELP);

并多次这样做。这会导致内存泄漏吗?

标签: androidperformance

解决方案


静态变量在类加载时只在类区域中获取一次内存。将变量设置为 static final 不会仅仅因为它被标记为 static final 而导致任何类型的内存泄漏。但如果你指向一个活动、片段或视图上下文泄漏,它会。

应用程序上下文

有关更多信息,您可以查看链接

9种避免Android内存泄漏的方法

Android内存泄漏与静态最终

使用 Memory Profiler 查看 Java 堆和内存分配


推荐阅读