文档章节

Java 500M的表,约1千万的数据放在HashMap里面大约占用内存多大?给多大内存最保险?

Oscarfff
 Oscarfff
发布于 2016/07/08 16:58
字数 484
阅读 333
收藏 2

Java 500M的表放在HashMap里面大约占用内存多大?给多大内存最保险?

测试1、给 java -Xms2048m -Xmx2048m

运行结果,系统CPU占用很大,GC全局回收比较厉害。

GC:  Scavenge GC - Reason started:  Eden full - parallel with thread number:  8
GC:  Scav 7.613 s  Since start of previous GC: 7.613 s  GC time: 0.572 s
     Time spent executing application: 7.613 s  (93.02%)
     Object size causing failure: 48 bytes  MaxTenure: 7
     Eden: 536870912->48/536870912
     Survivor: 0->88072136/88080384 (survivor used: 99.99%)
     Old: 0->410543440/1434451968       (old used: 28.62%)
     Perm: 10869592->10869592/10911744
GC:  Full GC - Reason started:  Allocation failure  
GC:  Full 14.852 s  Since start of previous GC: 7.239 s  GC time: 12.318 s
     Time spent executing application: 6.667 s  (35.12%)
   **** WARNING: Too much time spent in GC (>20%)
     Object size causing failure: 40 bytes  MaxTenure: 7
     Eden: 536870912->40/536870912
     Survivor: 88072136->0/88080384 (survivor used: 0.00%)
     Old: 410543440->1004089160/1434451968       (old used: 70.00%)
     Perm: 10870672->10870672/10977280
GC:  Full GC - Reason started:  Allocation failure  
GC:  Full 32.144 s  Since start of previous GC: 17.291 s  GC time: 9.114 s
     Time spent executing application: 4.974 s  (35.31%)
   **** WARNING: Too much time spent in GC (>20%)
     Object size causing failure: 152 bytes  MaxTenure: 7
     Eden: 536870912->72980680/536870912
     Survivor: 0->0/88080384 (survivor used: 0.00%)
     Old: 1004089160->1434417264/1434451968       (old used: 100.00%)
   **** WARNING: Sufficient Old Space not reclaimed (<20%)

测试2、给 java -Xms8092m -Xmx8092m

运行还行。

GC:  Scavenge GC - Reason started:  Eden full - parallel with thread number:  8
GC:  Scav 35.977 s  Since start of previous GC: 35.977 s  GC time: 2.516 s
     Time spent executing application: 35.977 s  (93.46%)
     Object size causing failure: 32 bytes  MaxTenure: 7
     Eden: 2147483648->32/2147483648
     Survivor: 0->356483168/356515840 (survivor used: 99.99%)
     Old: 0->1583995632/5729419264       (old used: 27.65%)
     Perm: 10872000->10872000/10977280
GC:  Scavenge GC - Reason started:  Eden full - parallel with thread number:  8
GC:  Scav 72.401 s  Since start of previous GC: 36.424 s  GC time: 3.535 s
     Time spent executing application: 33.908 s  (90.56%)
     Object size causing failure: 104 bytes  MaxTenure: 7
     Eden: 2147483648->104/2147483648
     Survivor: 356483168->356491160/356515840 (survivor used: 99.99%)
     Old: 1583995632->3541143400/5729419264       (old used: 61.81%)
     Perm: 10873672->10873672/10977280
$ 

 

 map's size is 13318240 finshed!, totally used 86229 millionseconds ##处理完成约需要86秒左右

总结:

1千万数据放在内存中,约需要8G启动堆大小。

另外通过这次测试发现 Map 比POJO要更占用内存。

© 著作权归作者所有

共有 人打赏支持
Oscarfff
粉丝 74
博文 816
码字总数 97116
作品 0
崇明
后端工程师
私信 提问
为什么Java程序占用的内存比实际分配给它的要多

很多人错误的认为运行Java程序时使用-Xmx和-Xms参数指定的就是程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存。堆只是影响Java程序占用内存数量的一个因素。要更好的理解你的...

曾沙
2012/11/27
1K
0
为什么Java程序占用的内存比实际分配给它的要多

很多人错误的认为运行Java程序时使用-Xmx和-Xms参数指定的就是程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存。堆只是影响Java程序占用内存数量的一个因素。要更好的理解你的...

tsl0922
2012/08/20
10K
9
从 Java 代码到 Java 堆

从 Java 代码到 Java 堆 分析是一种美德,PS原文地址:http://www.ibm.com/developerworks/cn/java/j-codetoheap/ 理解和优化您的应用程序的内存使用 本文将为您提供 Java™ 代码内存使用情况...

北极之北
2016/03/10
568
3
new一个Object对象占用多少内存?

Java的自动内存管理机制(automatic storage management system known as a garbage collector)省却了很多编码工作,大大地提高了Java的生产力,而且JVM的性能也越来越好,特别是G1的出现,...

杨尚川
2014/03/15
0
7
【JVM学习资料之虚拟机栈中都有什么?】

虚拟机栈中都有什么? Java虚拟机栈(Java Virtual Machine Stacks) 是线程私有的,它的生命周期与线程相同。虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,虚拟机栈描述的是Java方法执...

卯金刀GG
2018/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq

灰暗
25分钟前
0
0
Flink

flink HA部署 flink搭建,采用分布式部署方式,分别为A,B,C三个节点。其中A为master;A,B,C为worker。 本文使用的用户是hadoop用户(自己新建) 先决条件 Java 1.8.x or higher scala 自己使用...

-九天-
52分钟前
1
0
数据中台和传统数仓的区别

中台系统把业务层同性的算法能力,服务能力,业务能力高度集成,有效组织 ,动态规划。更好的帮助上层业务。 今天就让我们看看关于数据中台的问答吧。 1 Q : 什么是数据中台? A : 数据中台是...

hblt-j
54分钟前
4
0
Java在什么时候会出现内存泄漏

在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对...

群星纪元
57分钟前
2
0
android 打开摄像头

private SurfaceHolder mHolder; private SurfaceView mSurfaceView; private Camera mCamera; mSurfaceView = (SurfaceView) this.findViewById(R.id.camsurfaceView1); mHolder = mSurface......

jingshishengxu
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部