code: public Template getTemplateByString(String content, boolean cache) {
  		if (!cache) {
  			return buildTemplateBySource(new StringSource(content, cache));
  		}
  		
  		String cacheKey = HashKit.md5(content);
  		Template template = templateCache.get(cacheKey);
  		if (template == null) {
  			template = buildTemplateBySource(new StringSource(content, cache));
  			templateCache.put(cacheKey, template);
  		} else if (devMode) {
  			if (template.isModified()) {
  				template = buildTemplateBySource(new StringSource(content, cache));
  				templateCache.put(cacheKey, template);
  			}
  		}
  		return template;
  	}
docs: Get template by string content
  
  重要：StringSource 中的 cacheKey = HashKit.md5(content)，也即 cacheKey
  与 content 有紧密的对应关系，当 content 发生变化时 cacheKey 值也相应变化
  因此，原先 cacheKey 所对应的 Template 缓存对象已无法被获取，当 getTemplateByString(String)
  的 String 参数的数量不确定时会引发内存泄漏
  
  当 getTemplateByString(String, boolean) 中的 String 参数的
  数量可控并且确定时，才可对其使用缓存
  
  @param content 模板内容
  @param cache true 则缓存 Template，否则不缓存