如何确保变量不是垃圾收集?

时间:2014-07-03 14:24:08

标签: java spring garbage-collection jvm

控制器下方显示两个端点。

&#34; generateRec&#34;填充HashMap<String, Set<String>>

&#34; getRecById&#34;返回由&#34; generateRec&#34;

填充的Map的值

我想在jvm中保留rec的值,所以不要让它被垃圾收集。

我不认为rec会被垃圾收集,因为它永远不会被设置为空?

这是控制器:

@Controller 
@RequestMapping("getResponse")
public class RecController {

     private static Map<String, Set<String>> rec = new HashMap<String, Set<String>>();

     @RequestMapping(value = "/generateRec" , method = RequestMethod.GET)
     @ResponseBody
     public String generateRec(){

       rec = getRec();

      return getAsHtml(rec);
     }

     @RequestMapping(value = "/getRecById" , method = RequestMethod.GET)
     @ResponseBody
     public String getRecById(@RequestParam String id){

         if(rec.containsKey(id)){
             return rec.get(id).toString();
         }
         else {
             return "id "+id+ " not found"; 
         }

     }

     private String getAsHtml(Map<String, java.util.Set<String>> rec){
          String recStr = "";
          for(String key : rec.keySet()){

              recStr += key + " -> " + rec.get(key)+ "<br>";
          }

          return recStr;
     }

}

更新:

在评论中回答问题:

为什么你想&#34;在jvm&#34;中保持rec的值? 填充&#34; rec&#34;是一个昂贵的操作,并确定何时应该填充它是通过调用&#34; / generateRec&#34;端点。我已将更新的问题更新为&#34; rec = getRec();&#34; 。我想我正在尝试实现一个非常基本的缓存。

您希望再次使用它? 当&#34; getRecById&#34;时,将使用rec。调用端点

0 个答案:

没有答案