0
要绘制到问题一点:
我们正在利用我们的网站,一个Liferay门户解决方案,并添加一些功能和修复,我们使用的是门户网站中的bug方面。它自己的方面的数量在启动时不是问题,但它们有时会开始编织的类加载器的数量是。
Liferay使用JRuby对CSS文件执行SASS评估。每个处理得到的CSS文件都是自己的jruby类加载器(我对jruby的了解有限,所以我不知道它是否应该工作)。这导致如果大量css/jruby操作在同一时间得到执行,则内存可能会跳过1.5GB,并使JVM内存不足。如果JVM在最初跳转后仍然存在,或者如果没有同时处理多个文件,则内存使用会在一段时间后恢复正常。所以这个问题显然是由编织过程造成的内存开销引起的AspectJ的防止加载时织递归
在试图找到解决方案时,我想出了一些可以完成的更改。但我不确定哪个更好,哪个更有可能。
- 有没有办法排除一些classloader被aspectj处理的问题。在这种情况下,这将是jrubyclassloader(从我发现搜索后,我认为这是不可能的)
- jruby可以限制只使用1类加载器,因为这将减少编织开销,如果这意味着jruby只能做串行处理,那么这不会是一个问题
- 递归限制通过aspectj获得weaven的类(不要认为在aop.xml中排除是要去的方法,而是要为每个方面添加cflow限制个别)
从我从文档不解的是,如果你有3类A调用B调用C和说A.内exlude然后调用从A到B不会但是从B到C的呼叫会。我想看到的是,在A被忽略之后,我可以向织布工说出任何东西,所以B&C都可以 – user1787834 2013-03-28 14:01:42