如何解决内存不足
我正在使用 springboot+freemarker。
客户可以修改 freemarker 模板。
如果您添加 <#assign x><#list 1..9999999999999 as n>${n}</#list></#assign>${x}
后端将抛出内存不足错误。
有没有办法可以定义模板的内存。
解决方法
您可以使用 Xmx 选项增加应用程序使用的内存(不是专门用于模板)。
例如:
java -Xmx20G -jar app.jar
将使用 20Gb 内存启动 app.jar。
不幸的是,您的模板几乎不可能工作,因为它试图创建一个包含 100,000 亿个元素(1e13 个元素)的字符串,这至少需要 10 TB 的内存。我什至不确定 Java 是否可以处理这种大小的字符串。
,FreeMarker 目前没有支持/解决方案:
创建几乎永远运行(使用循环)或耗尽内存(通过连接到循环中的字符串)的模板是微不足道的。 FreeMarker 无法强制执行 CPU 或内存使用限制,因此这在 FreeMarker 级别没有解决方案。
您不应该盲目地让客户处理 freemarker 模板
,还要考虑安全隐患。 FreeMarker 模板可以调用您放入数据模型的对象的公共方法。见https://freemarker.apache.org/docs/app_faq.html#faq_template_uploading_security
如果您的用户不可信(并追究其责任),您就不能允许他们指定 FreeMarker 模板。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。