Map-HashMap 與 IF 判斷內存占用對比


HashMap與IF判斷內存占用對比,事實證明,Map對象在以下情況確實比IF判斷占用內存低。

HashMap占用內存:13000

package com.taiping.bky;

import java.util.HashMap;
import java.util.Map;

public class test {
    public static void main(String[] args) throws Exception {
        long start = 0;
        long end = 0;
        // 先垃圾回收
        System.gc();
        start = Runtime.getRuntime().freeMemory();
        int seatCount = 2; // 需要進行判斷的變量
        String projectCode;// 判斷之后賦值的變量
        String type = "A";
        Map<Integer, String> map = new HashMap<Integer, String>();

        if (type.equals("A")) {
            map.put(2, "0001");
            map.put(4, "0002");
            map.put(5, "0003");
            map.put(6, "0004");
            map.put(7, "0005");
        } else {
            map.put(2, "0006");
            map.put(4, "0007");
            map.put(5, "0008");
            map.put(6, "0009");
            map.put(7, "0010");
        }
        projectCode = map.get(seatCount);// 采用map的get方式取值
        // 快要計算的時,再清理一次
        System.gc();
        end = Runtime.getRuntime().freeMemory();
        System.out.println("一個HashMap對象占內存:" + (end - start));
    }
}

 IF判斷占用內存:18376

package com.taiping.bky;

import java.util.HashMap;
import java.util.Map;

public class test {
    public static void main(String[] args) throws Exception {
        long start = 0;
        long end = 0;
        // 先垃圾回收
        System.gc();
        start = Runtime.getRuntime().freeMemory();
        int seatCount = 2; // 需要進行判斷的變量

        String projectCode;// 判斷之后賦值的變量

        String type = "A";

        /** 優化之前,邏輯判斷太多,效率低下 */
        if (type.equals("A")) {
            if (seatCount == 2) {
                projectCode = "0001";
            } else if (seatCount == 4) {
                projectCode = "0002";
            } else if (seatCount == 5) {
                projectCode = "0003";
            } else if (seatCount == 6) {
                projectCode = "0004";
            } else if (seatCount == 7) {
                projectCode = "0005";
            }
        } else {
            if (seatCount == 2) {
                projectCode = "0006";
            } else if (seatCount == 4) {
                projectCode = "0007";
            } else if (seatCount == 5) {
                projectCode = "0008";
            } else if (seatCount == 6) {
                projectCode = "0008";
            } else if (seatCount == 7) {
                projectCode = "0010";
            }
        }
        // 快要計算的時,再清理一次
        System.gc();
        end = Runtime.getRuntime().freeMemory();
        System.out.println("一個IF判斷占內存:" + (end - start));
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM