关于jvm内存溢出的问题
来源:百度知道 编辑:UC知道 时间:2024/08/20 21:06:11
我现在写了个程序,从数据库里查出来几万条数据,然后将每一条封装成一个bean对象之后加到list中,现在出现个问题,就是程序运行到这之后提示内存溢出,除了修改运行时JVM虚拟内存参数之外,有没有什么更好的办法?譬如不要加到list中,换成其他的什么?
我并不是要做分页查询,我是将查询出的数据生成xml文件进行传输。请问要怎么优化算法呢?
我并不是要做分页查询,我是将查询出的数据生成xml文件进行传输。请问要怎么优化算法呢?
觉得还是分页查询,一次性查出来很耗内存。
在数据库设计这块,要建索引。
优化数据结构,保存尽量少的数据,封装成一个bean对象时进行优化。几万条数据每条数据能少点,那省下来的内存就多了。
如果数据优化没办法实施,那就只能分批对数据进行操作了,一次装入少批量的数据,多次完成。你要是一个循环从头到脚,一次就开了上万个对象,内存肯定吃不消,只能分段了,当然这种方法会降低性能的。当然如果在数据那里可以分页查询是最好了。
不知道你用什么开发的,ide里有性能分析器可以看到那部分数据占内存最多,你就可以拿大头开刀省内存了。
理论上来说用object数组会节约一些内存,但你描述的情况来看,占掉大量内存的应该是你的对象,所以恐怕你只能从算法来优化了。
比如说分页查询,建不建索引只是跟查询速度有关,跟内存占用就没啥联系了!
不要把大量数据保存到list,直接写到xml文件流