由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - convert array to blob
相关主题
help about bitstream writerhow to multicast objects to clients in java?
non-GPL free/oss embeded object/xml database?question on stream write
为什么大家都要用delimted string穿value呢?关于char和int的问题
invokedynamicarray to list
type erasure weird problemhow to read from a non-return socket stream?
how to calculate binary in java?Object stream & serilization有啥用处?
Java runtime array memory layout?这个怎么不对?
help! BufferedImageWhere I can find comparison of JVMs
相关话题的讨论汇总
话题: blob话题: array话题: java话题: convert话题: stream
进入Java版参与讨论
1 (共1页)
m**d
发帖数: 14
1
我有一个socket,给我一段一段stream。我要把它存到mysql的一个blob里面去。有一
个问题是,我不能按照原始stream的顺序存,而必须反过来存,比如进来的数据如果是:
line1111
line2222
line3333
那存在数据库里就必须是:
line3333
line2222
line1111
所以我不能直接吧stream迭代到mysql sql statement哪里去。我现在是手工把原始数
据搞成serizliable的object, 再把每次读进来一组array of object 转成bytes,再把bytes写到数据库。结果eclipse就崩溃了说Exception in thread "
main" java.lang.OutOfMemoryError: Java heap space
这个东西应该怎么样搞比较好?谢谢
g*****g
发帖数: 34805
2
What you are doing is fine, set
-Xms256m -Xmx512m or something like that for JVM.

是:

【在 m**d 的大作中提到】
: 我有一个socket,给我一段一段stream。我要把它存到mysql的一个blob里面去。有一
: 个问题是,我不能按照原始stream的顺序存,而必须反过来存,比如进来的数据如果是:
: line1111
: line2222
: line3333
: 那存在数据库里就必须是:
: line3333
: line2222
: line1111
: 所以我不能直接吧stream迭代到mysql sql statement哪里去。我现在是手工把原始数

F****n
发帖数: 3271
3
两个可能,1)程序里面有死循环;2)In memory 数据量太大,没设buffer size;
buffer 满了就应该写DB然后清掉再用。

【在 g*****g 的大作中提到】
: What you are doing is fine, set
: -Xms256m -Xmx512m or something like that for JVM.
:
: 是:

g*****g
发帖数: 34805
4
Not neccesary, Java by default uses only 64MB I believe, which is
way too small for many applications. A search on tables using blob
can cause outofmemory easily.

【在 F****n 的大作中提到】
: 两个可能,1)程序里面有死循环;2)In memory 数据量太大,没设buffer size;
: buffer 满了就应该写DB然后清掉再用。

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

It's not necessarily always possible in OP's case, which
is essentially a stack of items. It's really at the mercy
of whoever is sending the data. 8-)

【在 F****n 的大作中提到】
: 两个可能,1)程序里面有死循环;2)In memory 数据量太大,没设buffer size;
: buffer 满了就应该写DB然后清掉再用。

b******y
发帖数: 9224
6
I think you should first write it to a temporary file, then, spool that file
out to the mysql db.
Java is not good at memory utilization, but, on the other hand, you shouldn'
t store the stuff in memory either...
m**d
发帖数: 14
7
更新一下,还是改成顺序记录了,用inputstream传。端口的数据量也不算很大,最后
转成bytes也就几十m,端口进来的总量应该是这个的接近4倍。有个发现,jdbc, pstmt
.setBytes(int, byte []) 貌似会把这个byte []再自己拷贝一遍,是在stacktrace里
看到的一个copyto/tocopy之类的function,不过不确定,不知道caller是什么,是不
是deep copy.
eclipse.ini:
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M
1 (共1页)
进入Java版参与讨论
相关主题
Where I can find comparison of JVMstype erasure weird problem
问个很简单的问题?how to calculate binary in java?
怎样吧byte[]变成java.security.Key?Java runtime array memory layout?
怎麼得到字符串中的raw bytes?help! BufferedImage
help about bitstream writerhow to multicast objects to clients in java?
non-GPL free/oss embeded object/xml database?question on stream write
为什么大家都要用delimted string穿value呢?关于char和int的问题
invokedynamicarray to list
相关话题的讨论汇总
话题: blob话题: array话题: java话题: convert话题: stream