尝试节省内存是否有意义?

时间:2018-11-03 06:57:27

标签: java

public class KGEntry {

    private String sku;
    private String question;
    private String answer;
    private String brand;

    public static final class KGEntryKey {
        private String sku;
        private String question;

        public KGEntryKey(String sku, String question) {
            this.sku = sku;
            this.question = question;
        }

       // hash and equals
    }
}

现在我要创建:

 Map<KGEntryKey, KGEntry> map = new HashMap<>();

由于KGEntry和KGEntryKey中的'sku'和'question'相同,因此如果我将设计更改为以下内容,是否会减少内存使用量:

public class KGEntry {

        private String answer;
        private String brand;

        public static final class KGEntryKey {
            private String sku;
            private String question;

            public KGEntryKey(String sku, String question) {
                this.sku = sku;
                this.question = question;
            }

           // hash and equals
        }
    }

现在填充地图:

Map<KGEntryKey, KGEntry> map = new HashMap<>();

在我看来,节省内存没有。在这种情况下是否可以节省内存使用?

2 个答案:

答案 0 :(得分:1)

两个类KGEntryKey和KGEntry彼此之间没有任何关系,只是一个类的定义在另一个类之内。它们的内存消耗不会互相影响。

如果您具有彼此的引用,例如,KGEntry中实例类型为KGEntryKey的实例字段,则为(如果KGEntryKey不是static(在这种情况下,KGEntryKey实例将引用其包含的KGEntry实例),那么您提出的问题可能更有意义。

答案 1 :(得分:0)

您正试图节省美分,而不是进行美元交易。不用担心您的代码。有效-很好。内存性能很差。更具全局性,对于给定的10行代码无法完成。不用担心,我敢肯定,重构此代码不会获得任何可见的内存利润。