当前位置: 移动技术网 > IT编程>开发语言>Java > JVM培训序幕篇

JVM培训序幕篇

2018年09月14日  | 移动技术网IT编程  | 我要评论
明天老王要给我们讲JVM的知识,提前发了一个小Demo给我们看,代码如下: 运行上述代码,结果毫无疑问,电脑瞬间开始狂躁起来,过了十几秒,然后G了 基于JDK1.8运行的,估计老版本会崩的更快。。。 如果不计算内存,这个HashMap一共要插入4000*4000*4个对象,但是其实只有4个是不重复的 ...

明天老王要给我们讲jvm的知识,提前发了一个小demo给我们看,代码如下:

package demo;

import java.util.*;

public class demo {

    public static class skukey {
        private string category;
        private string skuproperties;

        public skukey(string category, string skuproperties) {
            this.category = category;
            this.skuproperties = skuproperties;
        }
    }


    public static class sku{
        string category;
        string skuproperties;
        string name;

        public sku(string category, string skuproperties, string name) {
            this.category = category;
            this.skuproperties = skuproperties;
            this.name = name;
        }
    }

    public static void main(string[] args) {

        list<sku> skus = new arraylist();
        skus.add(new sku("0001", "1:1;2:2;3:3", "sku-1"));
        skus.add(new sku("0002", "1:1;2:2;3:3", "sku-2"));
        skus.add(new sku("0003", "1:1;2:2;3:3", "sku-3"));
        skus.add(new sku("0004", "1:1;2:2;3:3", "sku-4"));

        map<skukey, sku> skubykey = new hashmap<>();
        for(int i = 0; i< 4000*4000; i++) {
            skus.foreach( sku -> skubykey.put(new skukey(sku.category, sku.skuproperties), sku ) );
        }

        system.out.println("build map complete");

    }

}

运行上述代码,结果毫无疑问,电脑瞬间开始狂躁起来,过了十几秒,然后g了

基于jdk1.8运行的,估计老版本会崩的更快。。。

如果不计算内存,这个hashmap一共要插入4000*4000*4个对象,但是其实只有4个是不重复的,所以其实我们只要重写hashcode和equals方法就可以解决这个问题了;

    public static class skukey {
        private string category;
        private string skuproperties;

        public skukey(string category, string skuproperties) {
            this.category = category;
            this.skuproperties = skuproperties;
        }
        public int hashcode(){
            return category.hashcode() + skuproperties.hashcode();
        }
        public boolean equals(object obj) {
            skukey skukey = (skukey)obj;
            return this.category.equals(skukey.category) && this.skuproperties.equals(skukey.skuproperties);
        }
    }

等明天培训之后再总结为何以这个为例子来引入jvm的深入研究!

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网