小编Pra*_*hra的帖子

为什么我的JDBC调用占用的内存是实际数据大小的4倍

我写了一个小的java程序,它使用简单的JDBC调用从DB2数据库加载数据.我正在使用select查询获取数据并使用java语句来实现此目的.我有正确关闭的语句和连接对象.我使用64位JVM进行编译和运行程序.

该查询返回了5200条记录,每行有24列,这需要我大约4分钟来加载Unix中的完整数据(具有多处理器环境).我使用HashMap作为数据结构来加载数据:Map<String, Map<String, GridTradeStatus>>.bean GridTradeStatus是一个简单的getter/setter bean,里面有24个属性.

程序所需的内存非常高.Java堆大小上升到5.8 - 6GB以加载完整数据,而实际使用的堆大小保持在4.7 - 4.9GB之间.我知道我们不应该将这么多数据加载到内存中,但我的业务需求只是这样.

问题是,当我将我的表的整个数据放在一个平面文件中时,它大约相当于~1.2GB.我想知道为什么我的java程序消耗的内存是实际大小的4倍.

java jdbc

5
推荐指数
1
解决办法
201
查看次数

标签 统计

java ×1

jdbc ×1