对整体堆大小的影响

创建对象情况

已使用的堆大小

没有使用任何对象

95,805,912 个字节

使用map10000000个相同字符串

1,017,388,888 个字节

创建10000000个空对象

432,016,408 个字节

创建10000000个包含值的对象

445,142,664 个字节

dump堆内存查看详细内容:

没有使用map和对象的堆dump

image.png

使用map保存10000000个相同字符串的堆dump

image.png

创建10000000个空对象的堆dump

image.png

创建10000000个保存相同字符串的堆dump

image.png

package com.example.demo.mongodb.service;

import com.example.demo.mongodb.model.User;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Component;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* 类描述

*

* @author duxuefu

* @date 2020-07-27

*/

@Component

public class MapService {

private static final Logger logger = LoggerFactory.getLogger(MapService.class);

private String s = "国家标准 GB 18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,与 GB 2312-1980 完全兼容,与 GBK 基本兼容,支持 GB 13000 及 Unicode 的全部统一汉字,共收录汉字 70244 个。现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施,为在中国境内所有软件产品支持的强制标准。";

private Map map = new HashMap<>();

List users = new ArrayList<>();

public MapService() {

for (int i = 0; i < 10000000; i++) {

map.put(Integer.toString(i), s);

User user = new User();

user.setProfile(s);

users.add(user);

}

}

}

package com.example.demo.mongodb.model;

import lombok.Data;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

* 类描述

*

* @author duxuefu

* @date 2020-07-08

*/

@Data

public class User {

private int id;

private String name;

private String sex;

private String profile;

}

java map 内存_java 使用对象和Map保存字符串占用存储空间对比相关推荐

  1. java的map集合_Java集合之Map

    正文 Map的特点? 通过Map接口的泛型我们可以看出:Map一次添加一对元素,存储的是键值对:而Collection接口一次添加一个元素. Map接口中的key是唯一的. Map的常见方法? 1.添 ...

  2. java 定义map集合_Java中的Map集合

    Map集合: 个人感觉Map接口以后会经常用到,可以很清晰地查找某个对象,要熟悉其四种遍历方法.特别注意其键值对的键不能是重复的,有想定义有序存取的话,可以使用LinkedHashMap集合.不过定义 ...

  3. java共享内存_Java共享内存

    1   共享内存对应应用开发的意义 对熟知UNIX系统应用开发的程序员来说,IPC(InterProcess Communication)机制是非常熟悉的,IPC基本包括共享内存.信号灯操作.消息队列 ...

  4. stream map方法_Java Stream中map和flatMap方法

    最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...

  5. java最大内存_JAVA:测试java虚拟机支持的最大内存 Xmx 值?Tomcat 内存溢出?

    如下命令,即可测试:不断调整n的值,windows上32位的1.6x为: 1610m java -Xmx1610M -version java -Xmx1610m -version 网摘的tomcat ...

  6. java web 刷新_Java Web项目的保存和刷新

    java web 刷新 如何配置计算机以保存并刷新Java Web项目? 当您向开发人员提出此问题时,答案以"哦,好吧--"开头,并以某种可行的方式继续描述. 每个人都有自己的方式 ...

  7. java堆内存_java堆内存详解

    http://www.importnew.com/14630.html java堆的特点 <深入理解java虚拟机>是什么描述java堆的 Java堆(Java Heap)是java虚拟机 ...

  8. java treemap 内存_Java中Map、HashMap、LinkedHashMap、TreeMap的区别

    Map: Map是一个接口不能实例化,Map接口主要有两个实现类:HashMap和TreeMap类.其中,HashMap类按哈希算法来存取对象,而TreeMap类可以对键对象进行排序: Map提供了一 ...

  9. java map赋值_java 中的map怎么没有办法赋值?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package cn.jado.framework.util; import java.io.BufferedReader; import java.io ...

最新文章

  1. rails小重构:将图片加入产品Model
  2. php顺序、二分查找
  3. 怎么用numpy读取excel的数据画三维图_python初学者,如何快速匹配excel任务
  4. HTML怎么限制每行字数,JS实现每行固定字数,自动换行
  5. 链表题目---4 删除链表中重复的结点 和 判断链表是否为回文链表
  6. Flink Checkpoint 问题排查实用指南
  7. android保存字符到sd卡,android 保存TXT文件到SD卡方法
  8. OpenPCDet:点云3D目标检测开源库
  9. 网络协议:TCP可靠传输
  10. 升级到只读域控制器RODC
  11. mysql io队列_网易视频云经验分享MYSQL 5.5 的IO控制
  12. 语音信号处理基础(四)—语音编辑
  13. 小程序 ---- (存在登录功能不符合运营规范问题)
  14. 百词斩不认识单词例句导出
  15. html页面排版会乱,窗口缩放导致页面排版错乱的解决方法
  16. MIMO系统如何获得分集增益(1)
  17. ARM9开发板连接鼠标和键盘
  18. CAD2018下载、安装步骤!
  19. 李飞飞高徒盘点年度十大AI亮点:核聚变、ChatGPT、AlphaFold上榜
  20. Microsoft Exchange Server邮箱管理

热门文章

  1. 有序标称变量(Categorical Features)编码为数值变量(Continuous Features​​​​​​​)详解及实践
  2. 广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合、优缺点
  3. R语言包_knitr
  4. python 同时遍历两个列表并组成一个字典
  5. python 终端执行命令
  6. 图像拼接--A multiresolution spline with application to image mosaics
  7. pip安装包以后jupyter不能导入的解决办法
  8. GitHub 博客-- Jekyll--代码高亮,Liquid 转义字符
  9. oracle创建 number,oracle创建表的方法和一些常用命令
  10. java jquery的定义方法_jQuery--基本语法