web应用中常出现的内存泄露

web应用中常出现的内存泄露

企业级管理软件的web应用和普通的web站点,B2C等有很大的不同。内存泄露的检查点也会不同。
检查点一:什么信息需要缓存在session中
在各种管理软件中,最常见的是把当前用户的权限等信息缓存在session中。好啦,问题来了,如果系统的权限很复杂:操作权限,管理权限,数据权限,字段权限,巴拉巴拉一大堆的话,那么把这大堆信息放到session中,一个用户就要占掉20M+的内存。访问用户一多,系统就挂了。而且管理软件一般都会把session的timeout设置的很多,除非用户手动的注销,否则即使木有操作也会吊在系统上很久。因此要评估此部分的设计,把不必要的或者访问不频繁的数据拖出session,放过session TA老人家吧。
检查点二:session数据传递
管理系统很多都会采用帧结构,常见的上帧查询条件,下帧显示结果。问题来了,采用帧结构如果传递数据到页面,就要通过session。开发的时候,一般都是后台开发负责业务逻辑,前台开发负责数据展示。前后开发一脱节,后台向前台传递了一个集合对象,前台木有用,也不管清除。这堆垃圾数据全部都驻留内存,所以系统跑着跑着就宕机了。
检查点三:不要试图通过页面来实现分页
管理系统由于业务复杂性等要求,大家都把注意力首先放在实现业务功能上,有时对数据的量级不是很关注。有的系统刚开始好好的,用着用着不不爽了,原因就是数据量一增加,很多相关的问题都会暴露出来。最常见的是分页处理,先把数据都取过来,在前台分页显示。千万不要这样,100条数据木有问题,1000条,10000条呢,结果就是前台很忙,然后就挂掉了。

你可能感兴趣的:(web应用中常出现的内存泄露)