`

java的ConcurrentHashMap太吃内存了啊

 
阅读更多

public class BattleTest {
	static int num=1_000_000;
	
@Test
public void testHashMap() throws Exception{
	List<Map<Integer, Boolean>> list=new ArrayList<>(num);
	for (int i = 0; i < num; i++) {
		Map<Integer, Boolean> passedMap = new HashMap<>();
		list.add(passedMap);
	}
	
}

@Test
public void testConcurrentHashMap() throws Exception{
	List<Map<Integer, Boolean>> list=new ArrayList<>(num);
	for (int i = 0; i < num; i++) {
		Map<Integer, Boolean> passedMap = new ConcurrentHashMap<>();
		list.add(passedMap);
	}
	
}
}





我100万个hashMap吃了25M内存,但是用了ConcurrentHashMap吃了250M内存,
我500万个hashMap吃了250M内存,但是用了ConcurrentHashMap吃了1.1G内存,

0
5
分享到:
评论
4 楼 jaiiye 2016-03-03  
你这样测,只能说明每个ConcurrentHashMap对象比每个HashMap对象大。
3 楼 SpringJava 2014-09-12  
roverll 写道
兄弟,我说下我的愚见:
貌似你这样测试是测错方向了,你应该在每个map里面都放100w个对象,再来比较,Map是个容器,是用来装东西的,你不会用100w个map,而是可能在一个Map里面放100w个对象



是的,测试方法不对,你NEW的100w个map,这个肯定会很占内存的啦。。。
2 楼 roverll 2014-03-16  
兄弟,我说下我的愚见:
貌似你这样测试是测错方向了,你应该在每个map里面都放100w个对象,再来比较,Map是个容器,是用来装东西的,你不会用100w个map,而是可能在一个Map里面放100w个对象
1 楼 543089122 2014-03-15  
哥们,这就好比是250W的跑车和25W的板车

相关推荐

    深入理解Java内存模型 pdf 超清版

    Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了程序中各个线程如何访问和修改共享变量,以及如何确保数据的一致性。深入理解Java内存模型对于编写高效的并发程序至关重要。本文...

    ehcache 缓存技术

    EHCache作为Java缓存技术的重要组成部分,通过有效的内存管理和缓存策略,显著提升了数据访问的效率。与Hibernate的集成使得它在ORM场景中表现突出。理解并熟练掌握EHCache的配置、使用和优化,对于提高Java应用的...

    ConcurrentHashMap源码剖析

    ConcurrentHashMap是Java中提供的一种高效、线程安全的哈希表实现。与传统的基于synchronized关键字实现线程安全的HashTable相比,ConcurrentHashMap通过采用锁分段技术显著提高了并发性能。本文将深入探讨...

    内存数据库代码有详细设计说明(java版)

    Java的ConcurrentHashMap等类可以支持这类缓存实现。 6. 查询优化:内存数据库应提供SQL支持,解析和优化SQL查询。这包括查询解析、查询计划生成和执行优化。Java的JDBC API可以用来处理SQL接口,而查询优化则需要...

    Java-concurrentMap-内存模型深入分析-HotCode

    本文将深入探讨`concurrentMap`在Java内存模型(JMM,Java Memory Model)中的实现原理,以及如何通过HotCode优化并发性能。 Java内存模型定义了线程之间的共享变量访问规则,确保在多线程环境下正确地同步数据。...

    ConcurrentHashMap思维导图完整版

    本文将结合Java内存模型,分析JDK源代码,探索ConcurrentHashMap高并发的具体实现机制,包括其在JDK中的定义和结构、并发存取、重哈希和跨段操作,并着重剖析了ConcurrentHashMap读操作不需要加锁和分段锁机制的内在...

    ConcurrentHashMap底层实现机制的分析1

    在本文中,我们将深入探索 ConcurrentHashMap 的高并发实现机制,并分析其在 Java 内存模型基础上的实现原理。了解 ConcurrentHashMap 的实现机制有助于我们更好地理解 Java 并发编程的原理和技术。 一、Java 内存...

    一文让你彻底理解JavaHashMap和ConcurrentHashMap

    Map这样的KeyValue在软件开发中是非常经典的结构,常用于在内存中存放数据。本篇主要想讨论ConcurrentHashMap这样一个并发容器,在正式开始之前我觉得有必要谈谈HashMap,没有它就不会有后面的ConcurrentHashMap。...

    JAVA的缓存应用介绍

    JAVA的缓存应用主要涉及到Java内存体系的理解、基础缓存的使用、缓存框架的介绍以及内存溢出状况的分析和内存检查工具的使用。在深入探讨这些话题之前,我们首先需要了解Java内存体系的基本概念。 Java内存体系主要...

    java中ConcurrentHashMap的读操作为什么不需要加锁

    与传统的`synchronized HashMap`不同,`ConcurrentHashMap`在设计上允许并发的读写操作,其中读操作尤其值得注意,因为它在执行时不需要加锁,这得益于Java内存模型和其内部实现机制。 首先,我们来看看`...

    2024 Java面试宝典合集

    3. **JAVA核心面试知识整理**:这部分内容可能涵盖Java基础,如内存模型、垃圾收集、类加载机制、多态、封装、继承、接口、异常处理、集合框架(List、Set、Map的区别和使用)、IO流、NIO、反射、枚举、注解等。...

    java高速文件缓存

    Java提供了synchronized关键字和java.util.concurrent并发工具类(如ConcurrentHashMap)来保证线程安全。合理设计并发策略可以避免数据竞争,提高系统性能。 六、缓存一致性 为了保持缓存与持久存储的一致性,需要...

    java核心知识-word版2

    9. **并发编程**:Java并发库包含许多高级工具,如ExecutorService、Future、Callable和Fork/Join框架,以及并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList,帮助开发者编写高效、安全的多线程代码。...

    Java面试要点(适用于2年以上经验,1年亦可)

    2. Java 内存模型:内存可见性、重排序、顺序一致性、volatile、锁、final 3. 垃圾回收:内存分配策略、垃圾收集器(G1)、GC 算法、GC 参数、对象存活的判定 4. JVM 参数及调优 5. Java 对象模型:oop-klass、对象...

    ConcurrentHashMap共18页.pdf.zip

    使用 ConcurrentHashMap 时,应根据实际并发需求选择合适的并发级别,过高的并发级别可能导致更多的内存消耗,而过低则可能降低并发性能。 10. **应用场景**: ConcurrentHashMap 适用于需要大量并发读写操作的...

    Java学习、面试必备

    - 内存管理:Java使用垃圾回收机制自动管理内存,避免了C++等语言中的内存泄漏问题。 - 核心API:了解ArrayList、LinkedList、HashMap等常用数据结构,以及InputStream、OutputStream等I/O流,是Java编程的基本功...

    Java Virtual Machine Specification Java SE 7 中文版

    9. 并发工具:Java SE 7提供了丰富的并发工具类,如ConcurrentHashMap、CountDownLatch、CyclicBarrier等,帮助开发者编写高效的多线程程序。 10. 文件I/O改进:Java SE 7引入了NIO.2,提供了一组新的文件I/O API,...

    ConcurrentHashMap的实现原理(JDK1.7和JDK1.8).pdf

    `ConcurrentHashMap`是Java并发编程中非常重要的一个数据结构,它是线程安全的HashMap实现。在理解`ConcurrentHashMap`的实现原理之前,我们先来看看哈希表的基本概念。 哈希表是一种键值对存储的数据结构,通过键...

Global site tag (gtag.js) - Google Analytics