语不惊人死不茠 2018-08-16 01:20 采纳率: 100%
浏览 682
已采纳

请教一个关于Spring-task定时任务的问题

List companyList=getCompanyList();
for(JSONObject company:companyList){
List todayBirthdays=getBirthdayUsers(getdate(0),company.getString("id"));
StringBuffer name=new StringBuffer();
StringBuffer ids=new StringBuffer();
StringBuilder hrsb = new StringBuilder();
ids.append("'");
ids.append("2017121618514C22B68296F31AF8DDE2");//不给XX发
ids.append("'");
ids.append(",");
String userIds ="";
if(todayBirthdays.size()>0){
for (JSONObject o : todayBirthdays) {
name.append(",");
name.append(o.getString("name"));
ids.append("'");
ids.append(o.getString("id"));
ids.append("'");
ids.append(",");
}
userIds = ids.toString().substring(0, ids.toString().length() - 1);
if (name.length() > 0) {
name.deleteCharAt(0);
}
List remindUsers=userDao.getViewJSONListByCondition(" AND companyId=? AND jobState!=1 AND id NOT in("+userIds+") GROUP BY id",new Object[]{company.getString("id")});
for (JSONObject hrUser : remindUsers) {
hrsb.append("|");
hrsb.append(hrUser.getString("id"));
}
if (hrsb.length() > 0) {
hrsb.deleteCharAt(0);
}
JSONObject msgObject = new JSONObject();
msgObject.put("userIds", hrsb);//object.getString("id")
msgObject.put("content", String.format(TODAY_BIRTHDAY_REMIND, name));
tokenDao.sendTextMsg(JSON.toJSONString(msgObject));
}

# 上面的代码,定时任务执行上边代码。我想问问这个会导致服务器占用内存爆炸吗。。是不是因为Stringbuilder的原因,之前手抖没看到怎么写了个Stringbuilder

第二天8.00执行 服务器ok,8.30左右服务器报错数据库连接最大,内存占用到了80%
我想问问是不是这个导致的

  • 写回答

4条回答 默认 最新

  • _zming 2018-08-16 02:17
    关注

    不知道你定时任务是多久执行一次,其次你得最好打印下生成后的字符数量,如果字符确实很长,而且任务执行频繁会耗费内存,问题不在于StringBuffer,而在于你怎么用,StringBuffer是可以循环利用的,当你用完后可以通过setLength(0)进行清空,方便内存释放,不需要每次for循环都去创建实例,每创建一个实例都会导致一定数量的字符数组的创建。所有创建一次就够了,使用setLength(0)后方可重新使用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度