由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 关于java执行SQL之后的内存问题?
相关主题
java小弱请教 java -Xmx40960mjdbc statement question
How to connect to SQL2000?问个很简单的问题?
请教高手一个JDBC的问题!help about bitstream writer
reverse the bit order of a byte怎样吧byte[]变成java.security.Key?
JDBC如何获取新加入的记录的索引Java在Web领域是不是太笨重了?
help for running CPU intensive program!!怎麼得到字符串中的raw bytes?
How to know the size of a java object ?How to parse the bytes[]
问一个关于pdf的问题SmartGWT or Ext-GWT
相关话题的讨论汇总
话题: resultset话题: 243591话题: statement话题: 内存话题: 230243
进入Java版参与讨论
1 (共1页)
w*******e
发帖数: 285
1
我的一个server程序似乎总有内存泄漏,我用sun自己的profiling连续监控了2个礼拜
,heap size从40兆涨到了400兆,然后我看了内存的使用情况,发现有几项是数据库的
statement和resultset
percent live alloc'ed stack class
self accum bytes objs bytes objs trace name
10.76% 25.34% 52615656 243591 359835048 1665903 305016 com.mysql.jdbc.
ResultSet
10.17% 35.52% 49732488 230243 49732920 230245 305033 com.mysql.jdbc.
ResultSet
7.97% 53.57% 38974560 243591 38974560 243591 309126 com.mysql.jdbc.
Statement
7.53% 61.10% 36838880 230243 36838
A**o
发帖数: 1550
2
you have to release jdbc resources manually...
like statement.close()
and, you have to deal with exception conditions
in short, jdbc sucks.

【在 w*******e 的大作中提到】
: 我的一个server程序似乎总有内存泄漏,我用sun自己的profiling连续监控了2个礼拜
: ,heap size从40兆涨到了400兆,然后我看了内存的使用情况,发现有几项是数据库的
: statement和resultset
: percent live alloc'ed stack class
: self accum bytes objs bytes objs trace name
: 10.76% 25.34% 52615656 243591 359835048 1665903 305016 com.mysql.jdbc.
: ResultSet
: 10.17% 35.52% 49732488 230243 49732920 230245 305033 com.mysql.jdbc.
: ResultSet
: 7.97% 53.57% 38974560 243591 38974560 243591 309126 com.mysql.jdbc.

m******t
发帖数: 2416
3

No, "blindly copy and paste the code you find on google without
understanding how it works" sucks.
(no offense to either of you guys, I just couldn't help)

【在 A**o 的大作中提到】
: you have to release jdbc resources manually...
: like statement.close()
: and, you have to deal with exception conditions
: in short, jdbc sucks.

w*r
发帖数: 2421
4
haha.. one blood see needle a

【在 m******t 的大作中提到】
:
: No, "blindly copy and paste the code you find on google without
: understanding how it works" sucks.
: (no offense to either of you guys, I just couldn't help)

A**o
发帖数: 1550
5
np. but what can you do when you don't know nothing? quit coding?

【在 m******t 的大作中提到】
:
: No, "blindly copy and paste the code you find on google without
: understanding how it works" sucks.
: (no offense to either of you guys, I just couldn't help)

g*****g
发帖数: 34805
6
Bullshit like you are the best coder in the world.
And trust me, many managers are stupid enough.

【在 A**o 的大作中提到】
: np. but what can you do when you don't know nothing? quit coding?
w*******e
发帖数: 285
7
说了这么多是不是就是大家都认为执行完executeQuery返回ResultSet以后,
在对ResultSet操作完并关闭ResultSet以后,一定还要手动关闭Statement,
否则就算它没有了reference,也会一直残存在内存中?

【在 g*****g 的大作中提到】
: Bullshit like you are the best coder in the world.
: And trust me, many managers are stupid enough.

A**o
发帖数: 1550
8
try it first and see what happens.

【在 w*******e 的大作中提到】
: 说了这么多是不是就是大家都认为执行完executeQuery返回ResultSet以后,
: 在对ResultSet操作完并关闭ResultSet以后,一定还要手动关闭Statement,
: 否则就算它没有了reference,也会一直残存在内存中?

w*******e
发帖数: 285
9
我试过了,执行10000条查询再profiling之后比较,确实不执行statement.close()的
话statement和ResultSet都占很大比例的内存,而且明显创建过10000个对象,结束的
时候内存也还存在10000个对象。要是每次都执行statement.close()或者总是同一个
statement就没有这个问题。不过同一个statement如果执行了下一个executeQuery那么
前一个命令中获得的ResultSet就会自动关闭.

【在 A**o 的大作中提到】
: try it first and see what happens.
g*****g
发帖数: 34805
10
Try the wrapper in spring to help you manage the resource.

【在 w*******e 的大作中提到】
: 我试过了,执行10000条查询再profiling之后比较,确实不执行statement.close()的
: 话statement和ResultSet都占很大比例的内存,而且明显创建过10000个对象,结束的
: 时候内存也还存在10000个对象。要是每次都执行statement.close()或者总是同一个
: statement就没有这个问题。不过同一个statement如果执行了下一个executeQuery那么
: 前一个命令中获得的ResultSet就会自动关闭.

m******t
发帖数: 2416
11

I know, I know, "gotta bring bread to the table for kids..."

【在 A**o 的大作中提到】
: np. but what can you do when you don't know nothing? quit coding?
m******t
发帖数: 2416
12

Well, mean comments aside, 8-), this is an interesting topic. My
understanding is this varies with databases. For instance, I know Statements
against Oracle need to be explicitly closed, OTOH SQL Server is more
lenient on this.
I normally just play safe and close all of them explicitly.

【在 w*******e 的大作中提到】
: 说了这么多是不是就是大家都认为执行完executeQuery返回ResultSet以后,
: 在对ResultSet操作完并关闭ResultSet以后,一定还要手动关闭Statement,
: 否则就算它没有了reference,也会一直残存在内存中?

t********k
发帖数: 808
13
我最怕statement resultrest connection没有被释放
所以我都是把resultset的结果存到collection里返回去的
返回前close所有能Close的东西
处理可能会慢点
但资源也有限啊
不知和我同样做法的有多少

【在 w*******e 的大作中提到】
: 我的一个server程序似乎总有内存泄漏,我用sun自己的profiling连续监控了2个礼拜
: ,heap size从40兆涨到了400兆,然后我看了内存的使用情况,发现有几项是数据库的
: statement和resultset
: percent live alloc'ed stack class
: self accum bytes objs bytes objs trace name
: 10.76% 25.34% 52615656 243591 359835048 1665903 305016 com.mysql.jdbc.
: ResultSet
: 10.17% 35.52% 49732488 230243 49732920 230245 305033 com.mysql.jdbc.
: ResultSet
: 7.97% 53.57% 38974560 243591 38974560 243591 309126 com.mysql.jdbc.

1 (共1页)
进入Java版参与讨论
相关主题
SmartGWT or Ext-GWTJDBC如何获取新加入的记录的索引
帮我了解一下64bit JVMhelp for running CPU intensive program!!
Re: 怎样才支持JDBC2.0?How to know the size of a java object ?
Re: Entity EJB: anyone with real experience问一个关于pdf的问题
java小弱请教 java -Xmx40960mjdbc statement question
How to connect to SQL2000?问个很简单的问题?
请教高手一个JDBC的问题!help about bitstream writer
reverse the bit order of a byte怎样吧byte[]变成java.security.Key?
相关话题的讨论汇总
话题: resultset话题: 243591话题: statement话题: 内存话题: 230243