java.lang.OutOfMemoryError: unable to create new
程序總是在兩三天就報(bào)一次內(nèi)存泄漏的異常,不知道是什么原因引起的,因?yàn)轫?xiàng)目中有一個(gè)地方?jīng)_到隊(duì)列,在隊(duì)列中創(chuàng)建了很多的線程不知道是不是這個(gè)引起了。。。public class GlobalVariables { public static ExecutorService pool = Executors.newFixedThreadPool(1000); public static BlockingQueue<Object> queue = new ArrayBlockingQueue<Object>(1000); public static Map<Integer, Integer> map = new HashMap<Integer, Integer>(); }public class AddQueues implements Runnable{ private Object obj; public AddQueues(Object obj) { this.obj = obj; } @Override public void run() { try { System.out.println("-------------"+obj); GlobalVariables.queue.put(obj); } catch (InterruptedException e) { e.printStackTrace(); } }}@Overridepublic Map<String, Object> updateQueuePool(Map<String, Object> map) throws Exception { EntranceVisitCountDTO dto = new EntranceVisitCountDTO(); dto.setAdminUserId(Integer.parseInt(map.get("adminUserId").toString())); GlobalVariables.pool.submit(new AddQueues(dto)); Map<String,Object> param = new HashMap<String,Object>(); param.put("result", "yes"); return param; }/*** 定時(shí)將隊(duì)列里的數(shù)據(jù)放到map中*/@Scheduled(cron = "0/3 * * * * ?")public synchronized void updateVisitCountOfMap(){ try{ if(!GlobalVariables.queue.isEmpty()){ for(int i = 0; i < 100; i++){ Object obj = GlobalVariables.queue.take(); if(obj instanceof EntranceVisitCountDTO){ EntranceVisitCountDTO dto = (EntranceVisitCountDTO)obj; Integer visitCount = GlobalVariables.map.get(dto.getAdminUserId()); if(visitCount != null && GlobalVariables.map.size() <= 1000){ GlobalVariables.map.put(dto.getAdminUserId(), visitCount +1); }else if(GlobalVariables.map.size() > 1000){ visitDayCountService.updateEntranceShowCount();
查看完整描述