语不惊人死不茠 2018-08-15 17: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-15 18:17
    关注

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

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

报告相同问题?

悬赏问题

  • ¥15 python 下载群辉文件
  • ¥50 代码还没怎么运行但是需要代码功能调用数据
  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部