日期:2014-05-18  浏览次数:20631 次

页面显示过多图片导致内纯溢出。
由于客户要求,在一页上显示了大概260多张图片,每张大概30K,网页打开速度很慢。而且经常出现内存溢出,每天都要重启一次服务器,源代码里面的数据库不是很合理,效率不高。
我想问问大家,这个跟页面显示那么多图片有关系吗?

------解决方案--------------------
没关系,图片又不加载到你的内存里面!找个工具看看,哪一步内存增加量大,试试:Jprofiler
------解决方案--------------------
图片怎么保存的,直接链接不会溢出的。
------解决方案--------------------
不能分页吗?
------解决方案--------------------
没关系,图片又不加载到你的内存里面!找个工具看看,哪一步内存增加量大,试试:Jprofiler
------解决方案--------------------
我觉得你这种情况导致客户端的显示慢可能是你服务器处理显示图片的方法有问题导致的。请问你是怎样把260张图片显示到客户端的呢?
------解决方案--------------------
但建议LZ后台采用分段显示,260多张分多次查询,但在页面还是不分页,客户一个请求就要把260多张图放进缓存,
这样搞内存不溢出才怪,修改下访问数据库逻辑吧。
------解决方案--------------------
图片在服务器端,而取一次,就相当于下载!
当很多人浏览的时候,不挂掉才怪了!
------解决方案--------------------
探讨
图片在服务器端,而取一次,就相当于下载!
当很多人浏览的时候,不挂掉才怪了!

------解决方案--------------------
把图片做成缩略图,链接指向小图,小图点时看大图,这样占用资源就少多了。
------解决方案--------------------
探讨
引用:

图片在服务器端,而取一次,就相当于下载!
当很多人浏览的时候,不挂掉才怪了!

这只不过是连接数和网络带宽的问题,不会占用服务器资源,更不会让服务器内存溢出。最好lz贴出来错误信息

------解决方案--------------------
我也是这样做的啊 数据库只存个图片url 取就取这个扔到list迭代
楼主这种情况没遇到过 把TOMCAT内存加大些试试
------解决方案--------------------
Tomcat的配置问题,260张图片只要配置好了不会出问题的!
------解决方案--------------------
1 是不是为了加快速度,部分图片放入内存缓冲区中了
------解决方案--------------------
探讨
没关系,图片又不加载到你的内存里面!找个工具看看,哪一步内存增加量大,试试:Jprofiler

------解决方案--------------------
两个建议:
1.查看具体内存溢出的情况,是哪个段溢出,tomcat有很多段默认设置不是很好,用在稍大的项目上就容易产生溢出,修改相应的内存段大小就好了。具体设置方法上网上搜一下“tomcat 内存设置”就有了。

2.你用了260个连接字符串,默认的java内存本就不大,如果每个字符串内容在多一些,加上稍大的并发考虑,你的内存消耗也会比较大,建议先修改数据库中的内容,不存全部的url字符串,只存一个类似id的内容,让程序去拼url,可以的话,可以直接用静态类缓冲了这些图片地址,使得多个并发之间不产生新的对象,就不会加大程序的内存使用了。


------解决方案--------------------
HTTP:超文本传输协议(Hypertext Transfer Protocol),说白了就是文件下载,只是协议规范不同于FTP协议;
服务器发HTTP报文,显然需要先拼HTTP包,这样图片文件不就在内存中了,不同的实现只是在策略上有差异,比如何时加载图片。
内存益处的问题,建议用Jprofiler检测,否则猜也没用。
“就是每隔一天 tomcat就挂掉了。日志里面是就是内存溢出异常。”,从这句话感觉,内存是时间的递增函数,就个人认为,内存益处的原因不在于图片,否则即使是小并发量,你那系统也撑不住。但像你这样的策略,显然也是差劲至极的,系统崩溃也是迟早的事情。
------解决方案--------------------
应该和图片多少没有关系,图片多只能表示对服务器的请求多,而请求的图片仅仅通过I/O就传输给你了,和内存没什么关系。不过如果你要打水印什么的,对图片进行预处理的话,那是要用内存的,这个时候可能就是图片占用的内存没有释放掉。
建议:把图片减少,试试。检查是否有预处理图片的代码。
------解决方案--------------------
哼哼,30K*260一点都不大。
------解决方案--------------------
用ajax 分步取不知道怎么样