ResultSet内存

时间:2011-07-11 13:59:29

标签: java jdbc resultset

我有100k记录的ResultSet,每条记录有5个单元格,其中2个是int数据类型,3个是Varchar(100)数据类型

我的问题是当从java程序执行查询时如何将内存分配给这些数据类型的结果集

特别是varchar数据类型是所有varchar(100)单元具有相同的100个字符的内存,或者它取决于每个varchar(100)单元格包含的数据

例如说我在varchar(100)

上有两个单元格的以下记录
------------------------
| "abc" | | "pqrstuv" |
------------------------

这里的内存大小是10个字符还是200个字符?

问候

2 个答案:

答案 0 :(得分:1)

“varchar”类型用于可变长度字符串。因此,你的字符串只会占用字符串中实际字符数的空间量(在你的例子中为10个字符)。如果您将这些字段定义为“char”(固定长度),然后,则每个字段将占用100个字符。

答案 1 :(得分:0)

大多数JDBC驱动程序都支持对结果集进行分页。这意味着一次只加载一部分结果。内部使用的内存量不太重要,因为它只是数据的子集。如果保留所有记录,则使用的数据量更为重要。保留String时,每个字符将使用1-2个字节(加上一些开销),具体取决于您的JVM。

无论哪种方式,除非您拥有移动设备,否则使用的内存可能与您拥有的内存相比非常小。