我已经追了好几天了.我们在我们的应用程序中使用JAXB,sun实现.当停止Tomcat(6或7)时,catalina日志文件中记录了严重的内存泄漏,列出了我们在应用程序中的所有JAXB类,两个不同的包中有两个类.
我经历过很多google和Stack溢出链接.我使用过JProfiler,它告诉我Tomcat在不使用时会持有Enums,但这不应该是问题.marshaller或unmarshaller的所有实例都是在本地创建的,并且对于激进的GC设置为null.我确保在销毁servlet时JAXBcontext为null,并且在我的contextDestroyed中运行System.gc(); 已被建议避免错误.
但仍然会记录错误.我在Tomcat演示文稿中看到这是已知的错误,因为JAXBContext.newInstance()创建了一个JarURLConnection锁,显然这可以通过禁用缓存来避免,但这对我没有任何作用. http://people.apache.org/~markt/presentations/2010-11-04-Memory-Leaks-60mins.pdf
关于如何在Tomcat上运行的JAXB中修复此内存泄漏的任何其他建议.
这是错误日志:
SEVERE: The web application [/myApplication] created a ThreadLocal with key of type [com.sun.xml.bind.v2.ClassFactory$1] (value [com.sun.xml.bind.v2.ClassFactory$1@6a724da1]) and a value of type [java.util.WeakHashMap] (value [{class my.package.model.layout.Element=java.lang.ref.WeakReference@7646bb9f, class my.package.model.layout.ScriptBeforeFileID=java.lang.ref.WeakReference@1dc80063, class my.package.model.layout.OutputProperty=java.lang.ref.WeakReference@359172db, class my.package.model.layout.Data=java.lang.ref.WeakReference@600ba356, class my.package.model.layout.InputProperty=java.lang.ref.WeakReference@1c10945d, class my.package.model.layout.ToPort=java.lang.ref.WeakReference@47c7410, class my.package.model.layout.ConfigFile=java.lang.ref.WeakReference@6a7c8bd, class my.package.model.layout.LayoutInstanceID=java.lang.ref.WeakReference@716bf3b4, class my.package.model.layout.ScriptAfterFunction=java.lang.ref.WeakReference@664ce898, class be.securit.trustbuilder.config.model.........}])
but failed to remove it when the web application was stopped.
Threads are going to be renewed over time to try and avoid a probable memory leak.
17-sep-2013 15:21:45 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
Run Code Online (Sandbox Code Playgroud) 我正在运行 grunt-contrib-uglify v 2.15.1。当我使用 lambda 或箭头函数时失败:
Running "uglify:admin" (uglify) task
{ message: 'SyntaxError: Unexpected token: operator (>)',
filename: 'admin-app-ng.js',
line: 4927,
col: 50,
pos: 216049,
stack: 'Error\n at new JS_Parse_Error (eval at <anonymous>
Run Code Online (Sandbox Code Playgroud)
如果我删除 lambda,那么 uglify 函数。在使用 lambdas/箭头函数时有没有办法使用 uglify?
这是箭头函数:
myService.getActions($scope.myVar, (type) => (type === 'myType')?true:false);
Run Code Online (Sandbox Code Playgroud) web.xml文件中的url-pattern是否可以使用查询字符串来确定匹配,例如:
<security-constraint>
<web-resource-collection>
<web-resource-name>myServletTest</web-resource-name>
<url-pattern>/myServlet?test=one</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
Run Code Online (Sandbox Code Playgroud)
或者这是无效的还是只是匹配myServlet忽略查询字符串?
我正在考虑在我的项目中使用 Handlbars 模板。把手可以返回 DOM 对象还是只返回 HTML。例如,如果我想将一个孩子附加到一个 DIV 中,我可以调用 DIV.appendChild(myTemplate); 像这样的东西:
var parentDiv = document.getElementById("parentDiv");
for(var i = 0;i<myData.length;i++){
var source = $("#my-template").html();
var template = Handlebars.compile(source);
var values = myData[i];
parentDiv.appendChild(template(values));
}
Run Code Online (Sandbox Code Playgroud)
由此我得到一个 arg 1 of appendChild is not an object error throws,因为渲染的模板是 html/string。
有什么我可以在车把中调用来生成对象的东西吗?
我是否试图将模板扩展得太远,或者是否有其他解决方案以这种方式运行,或者我是否坚持手动编写 createElement?