社区
Java EE
帖子详情
有人对jfreechart比较熟悉吗,帮帮忙
TDwebber
2008-10-06 06:53:01
我最近想用jfreechart批量生成一批走势图,有几千个吧。
总是报out of memory的错误,tomcat的内存加大也没用,请问能有什么地方可以优化的吗?
我已经禁掉了tooltips和urls。
...全文
270
38
打赏
收藏
有人对jfreechart比较熟悉吗,帮帮忙
我最近想用jfreechart批量生成一批走势图,有几千个吧。 总是报out of memory的错误,tomcat的内存加大也没用,请问能有什么地方可以优化的吗? 我已经禁掉了tooltips和urls。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
38 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ftzzh004
2008-10-09
打赏
举报
回复
我记错了不是Y轴,是x轴上有重复值有可能导致这个问题。
freefree
2008-10-08
打赏
举报
回复
sleep(2000)没什么用,只是生成之后停一下,生成的太快容易瞬时内存增大很多。
这个说明你的内存释放有问题,
建议楼主单步调试一下你的程序,看程序运行到哪步,内存会升高
你用是什么方式做的数据库查询?你的这种方式我没见过。
TDwebber
2008-10-08
打赏
举报
回复
[Quote=引用 31 楼 freeflyfree 的回复:]
Thread.sleep(2000); 这个有用吗?
getPropertyDataset这个方法检查一下,
并且在循环中,每次生成图片以后,都DefaultCategoryDataset = null
[/Quote]
sleep(2000)没什么用,只是生成之后停一下,生成的太快容易瞬时内存增大很多。
我已经在用完dataset之后设置为null了。
下面是getPropertyDataset方法的代码:
public DefaultCategoryDataset getPropertyDataset(Integer propertyId) {
Calendar now = Calendar.getInstance();
Date endDate = now.getTime();
now.set(Calendar.MONTH, now.get(Calendar.MONTH) - 12);
Date startDate = now.getTime();
DetachedCriteria dc = DetachedCriteria
.forClass(PropertyAveragePrice.class);
dc.createAlias("properties", "prop");
dc.add(Restrictions.eq("prop.propertyId", propertyId));
dc.add(Restrictions.ge("statDate", startDate));
dc.add(Restrictions.le("statDate", endDate));
List res = this.getDao().selectObjects(dc);
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
if (res != null && res.size() > 0) {
SimpleDateFormat sdf = new SimpleDateFormat("yy/MM");
for (int i = 0; i < res.size(); i++) {
PropertyAveragePrice pap = (PropertyAveragePrice) res.get(i);
dataset.addValue(pap.getPrice(), "", sdf.format(pap
.getStatDate()));
}
}
return dataset;
}
freefree
2008-10-08
打赏
举报
回复
Thread.sleep(2000); 这个有用吗?
getPropertyDataset这个方法检查一下,
并且在循环中,每次生成图片以后,都DefaultCategoryDataset = null
TDwebber
2008-10-08
打赏
举报
回复
[Quote=引用 29 楼 freeflyfree 的回复:]
引用 26 楼 TDwebber 的回复:
引用 25 楼 freeflyfree 的回复:
引用 22 楼 TDwebber 的回复:
引用 21 楼 freeflyfree 的回复:
在你循环取数的时候有没有及时的把取出来的数在生成图片以后清理掉?
取出来的数?你是指CategoryDataset?
你把你循环的那部分语句发出来
try {
String hql = "from Properties p where p.status=1";
List <Properties> props = this.getDao().select(hql);
for (Properties prop …
[/Quote]
没有啊,一个循环而已。
freefree
2008-10-08
打赏
举报
回复
我们一直都是用jfreechar开发,但是没有一下子生成几千副图片的,所以没有碰到过你的问题,而且我认为这个不是jfreechar的问题,而是你的程序没有释放内存,按照我上面说的
单步调试一下你的程序,看程序运行到哪步,内存会升高 并且没有回落。先要找到问题才能解决问题。
freefree
2008-10-08
打赏
举报
回复
[Quote=引用 34 楼 TDwebber 的回复:]
引用 33 楼 freeflyfree 的回复:
sleep(2000)没什么用,只是生成之后停一下,生成的太快容易瞬时内存增大很多。
这个说明你的内存释放有问题,
建议楼主单步调试一下你的程序,看程序运行到哪步,内存会升高
你用是什么方式做的数据库查询?你的这种方式我没见过。
现在就是为了解决内存释放的问题。
[/Quote]
要解决,就首先要找到那个地方的内存没有释放啊,所以要你单步调试一下啊
TDwebber
2008-10-08
打赏
举报
回复
感觉用jfreechart的人比较少啊,高手呢?
有没有需要特别注意的地方,给个提示啊。
TDwebber
2008-10-08
打赏
举报
回复
[Quote=引用 33 楼 freeflyfree 的回复:]
sleep(2000)没什么用,只是生成之后停一下,生成的太快容易瞬时内存增大很多。
这个说明你的内存释放有问题,
建议楼主单步调试一下你的程序,看程序运行到哪步,内存会升高
你用是什么方式做的数据库查询?你的这种方式我没见过。
[/Quote]
现在就是为了解决内存释放的问题。
dujun3245350
2008-10-07
打赏
举报
回复
接分
freefree
2008-10-07
打赏
举报
回复
[Quote=引用 26 楼 TDwebber 的回复:]
引用 25 楼 freeflyfree 的回复:
引用 22 楼 TDwebber 的回复:
引用 21 楼 freeflyfree 的回复:
在你循环取数的时候有没有及时的把取出来的数在生成图片以后清理掉?
取出来的数?你是指CategoryDataset?
你把你循环的那部分语句发出来
try {
String hql = "from Properties p where p.status=1";
List <Properties> props = this.getDao().select(hql);
for (Properties prop : props) {
DefaultC…
[/Quote]
你用了多线程?
cuilike
2008-10-07
打赏
举报
回复
内存不够用咯。。。生成数目太多了
freefree
2008-10-07
打赏
举报
回复
一次生成几千个?到底是怎么生成的?是生成几千个png图片还是什么?
如果是生成几千个ppng图片,你每生成完一个图片以后,就把相关的对象关闭。
宋玮-深圳
2008-10-07
打赏
举报
回复
几千个有必要一次都生成么?
zou_wei_forever
2008-10-07
打赏
举报
回复
对jfreechart不了解,只能帮顶了!
baocheng211
2008-10-07
打赏
举报
回复
关注
TDwebber
2008-10-07
打赏
举报
回复
[Quote=引用 27 楼 yingchun888 的回复:]
jfreechart生成几k的数据点(线)图应该是没有问题的.
我估计是你的数据有问题(重复的值)...
[/Quote]
重复的值怎么讲?CategoryData里面的值?
yingchun888
2008-10-07
打赏
举报
回复
jfreechart生成几k的数据点(线)图应该是没有问题的.
我估计是你的数据有问题(重复的值)...
TDwebber
2008-10-07
打赏
举报
回复
[Quote=引用 25 楼 freeflyfree 的回复:]
引用 22 楼 TDwebber 的回复:
引用 21 楼 freeflyfree 的回复:
在你循环取数的时候有没有及时的把取出来的数在生成图片以后清理掉?
取出来的数?你是指CategoryDataset?
你把你循环的那部分语句发出来
[/Quote]
try {
String hql = "from Properties p where p.status=1";
List<Properties> props = this.getDao().select(hql);
for (Properties prop : props) {
DefaultCategoryDataset ds = this.getPropertyDataset(prop.getPropertyId());
this.savePropertyImage(prop, ds);
try {
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch(Exception e) {
e.printStackTrace();
}
。。。。。。。
freefree
2008-10-07
打赏
举报
回复
[Quote=引用 22 楼 TDwebber 的回复:]
引用 21 楼 freeflyfree 的回复:
在你循环取数的时候有没有及时的把取出来的数在生成图片以后清理掉?
取出来的数?你是指CategoryDataset?
[/Quote]
你把你循环的那部分语句发出来
加载更多回复(18)
精益求精,抑或得过且过
程序员面临的最痛苦之事,莫过于修改旧代码;如果还有比这更痛苦的,就是修改糟糕透顶,乱得一团糟的烂代码。最近因为手底下一帮程序员都在忙,市场部正好又反馈过来一个要命的bug,一时手痒,就领下了这个任务。我们这个产品是针对教育行业的,它是在好几年前开发,然后不断完善和维护。这些阶段都是在我来到这家公司之前完成的。所以,我对于产品的代码并不
熟悉
。 原来的需求是假定客户设置分数段时,不同的分数段有不同的...
深入浅出java高级编程【2011-11-25】
谁能全面的说说struts的中文资源问题 JavaMail 1.3.2 Release!!! POI打开Excel时如何计算公式 如何制作tomcat安装盘 Eclipse+Jboss开发stateless session bean出现的问题,急!!! hibernate能实现batch的insert吗? 开发ejb出现的问题。高手求助~!~ jbuilder9,weblogic8.
webmagic采集CSDN的Java_WebDevelop页面
使用webmagic采集博客类的网站示例
thinking in java 学习笔记 11持有对象
第十一章 持有对象 因为最近太多事情忙了,导致没时间写blog了,不过基础知识还是不能丢下的,所以要加油,希望和我一起学java的同学也能坚持下去 这一章所介绍得内容就是我们平时常用的数据结构。例如表,图,栈,队列什么的,在数据结构中这些都需要我们自己去编写,但是在java或者可以说在许多语言中,为了方便我们的工作,都封装成了易用的工具类 .为什么要引入这...
Java面试题总结
Java基础: 1、JAVA中能创建volatile数组吗?volatile能使得一个非原子操作变成原子操作吗? 回答: 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。Java 中读取 long 类型变量不是原子的,需要分成两步,如果一个线程正在修改该 long 变量的值,另一个线程可能只能看到该值的一半(前 32 位)。但是volatile...
Java EE
67,538
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章