StringWriter使用的困惑

使用Velocity的模版构建显示层或响应信息时,常常用到StringWriter这个类,或者是流。不过这个流比较特别,和ByteArrayInputStream和ByteArrayOutputStream相似,它们都可以在流对象执行了close方法后继续通过toString或toByteArray方法获取流中的数据,各种原因是在这些流中使用了缓存对象,关闭了流依然可以从缓存对象中获取数据;网上的一篇Java开发规范中也明确说明,上述这些流在使用时,可以不用像其他流那样一定要在finally方法中关闭流,以防资源泄露。可是我的问题出来了,那这个流对象的资源什么时候释放呢?最近的一次项目中,发现内存占用持续在高位运行,使用jprofile进行监控时,如果使用jprofile的垃圾回收功能进行强制的回收,内存居然能够回落到一个相当低的位置,但是如果不强制执行垃圾回收那么内存一直处于高位。后来,在关闭StringWriter对象之前,我调用了flush方法,再次进行测试时发现内存不再一直处于高位了!感觉很是奇怪。调用close方法时,会刷新流且释放资源,那么我显示调用一下flush方法真的会有那么大的作用吗?还在困惑中。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值