java map 内存_java 使用对象和Map保存字符串占用存储空间对比
对整体堆大小的影响
创建对象情况
已使用的堆大小
没有使用任何对象
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保存字符串占用存储空间对比相关推荐
- java的map集合_Java集合之Map
正文 Map的特点? 通过Map接口的泛型我们可以看出:Map一次添加一对元素,存储的是键值对:而Collection接口一次添加一个元素. Map接口中的key是唯一的. Map的常见方法? 1.添 ...
- java 定义map集合_Java中的Map集合
Map集合: 个人感觉Map接口以后会经常用到,可以很清晰地查找某个对象,要熟悉其四种遍历方法.特别注意其键值对的键不能是重复的,有想定义有序存取的话,可以使用LinkedHashMap集合.不过定义 ...
- java共享内存_Java共享内存
1 共享内存对应应用开发的意义 对熟知UNIX系统应用开发的程序员来说,IPC(InterProcess Communication)机制是非常熟悉的,IPC基本包括共享内存.信号灯操作.消息队列 ...
- stream map方法_Java Stream中map和flatMap方法
最近看到一篇讲stream语法的文章,学习Java中map()和flatMap()方法之间的区别. 虽然看起来这两种方法都做同样的事情,都是做的映射操作,但实际上差之毫厘谬以千里. 通过演示Demo中 ...
- java最大内存_JAVA:测试java虚拟机支持的最大内存 Xmx 值?Tomcat 内存溢出?
如下命令,即可测试:不断调整n的值,windows上32位的1.6x为: 1610m java -Xmx1610M -version java -Xmx1610m -version 网摘的tomcat ...
- java web 刷新_Java Web项目的保存和刷新
java web 刷新 如何配置计算机以保存并刷新Java Web项目? 当您向开发人员提出此问题时,答案以"哦,好吧--"开头,并以某种可行的方式继续描述. 每个人都有自己的方式 ...
- java堆内存_java堆内存详解
http://www.importnew.com/14630.html java堆的特点 <深入理解java虚拟机>是什么描述java堆的 Java堆(Java Heap)是java虚拟机 ...
- java treemap 内存_Java中Map、HashMap、LinkedHashMap、TreeMap的区别
Map: Map是一个接口不能实例化,Map接口主要有两个实现类:HashMap和TreeMap类.其中,HashMap类按哈希算法来存取对象,而TreeMap类可以对键对象进行排序: Map提供了一 ...
- java map赋值_java 中的map怎么没有办法赋值?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package cn.jado.framework.util; import java.io.BufferedReader; import java.io ...
最新文章
- rails小重构:将图片加入产品Model
- php顺序、二分查找
- 怎么用numpy读取excel的数据画三维图_python初学者,如何快速匹配excel任务
- HTML怎么限制每行字数,JS实现每行固定字数,自动换行
- 链表题目---4 删除链表中重复的结点 和 判断链表是否为回文链表
- Flink Checkpoint 问题排查实用指南
- android保存字符到sd卡,android 保存TXT文件到SD卡方法
- OpenPCDet:点云3D目标检测开源库
- 网络协议:TCP可靠传输
- 升级到只读域控制器RODC
- mysql io队列_网易视频云经验分享MYSQL 5.5 的IO控制
- 语音信号处理基础(四)—语音编辑
- 小程序 ---- (存在登录功能不符合运营规范问题)
- 百词斩不认识单词例句导出
- html页面排版会乱,窗口缩放导致页面排版错乱的解决方法
- MIMO系统如何获得分集增益(1)
- ARM9开发板连接鼠标和键盘
- CAD2018下载、安装步骤!
- 李飞飞高徒盘点年度十大AI亮点:核聚变、ChatGPT、AlphaFold上榜
- Microsoft Exchange Server邮箱管理
热门文章
- 有序标称变量(Categorical Features)编码为数值变量(Continuous Features​​​​​​​)详解及实践
- 广义线性模型?链接函数?sigmoid和softmax?Logistic处理多分类问题?logistic回归处理超大数据?使用logistic和randomsearch进行组合获取最优参数组合、优缺点
- R语言包_knitr
- python 同时遍历两个列表并组成一个字典
- python 终端执行命令
- 图像拼接--A multiresolution spline with application to image mosaics
- pip安装包以后jupyter不能导入的解决办法
- GitHub 博客-- Jekyll--代码高亮,Liquid 转义字符
- oracle创建 number,oracle创建表的方法和一些常用命令
- java jquery的定义方法_jQuery--基本语法