从报错内容很清楚是Metaspace区域oom了
大部分情况下,程序运行中不会出现过多的类加载数量的变动,先导入dump文件检查是否有异常的classLoader或者有异常动态生成的class
发现了下面这个classLoader数量异常,项目中用到nashorn这块js引擎来做动态js脚本执行
通过查阅nashorn源码发现
https://github.com/JetBrains/jdk8u_nashorn/blob/master/src/jdk/nashorn/internal/runtime/Context.java#L1304
有_loader_per_compile参数可以控制ClassLoader的创建是否复用
https://github.com/JetBrains/jdk8u_nashorn/blob/master/src/jdk/nashorn/internal/runtime/resources/Options.properties#L211-L216
默认为true代表每次compile js脚本都会新创建一个classLoader,用下面的方式改造一下js引擎的创建方式
改造前测试200次 发现创建了200个ScripLoader
改造后测试发现ScriptLoader数量不再变化了
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
file not found with include; use “quotes” instead 这个错误提示不能使用大括号来引用静态库而要使用“”来引用静态库 下面讲解下如何 在工程中使用 来引用静态库。 在自己添加的.a 静态库中 如何 使用来引用头文件…