2014-04-19 23 views
1

我運行在本地rbenv的WEBrick服務器的Rails應用程序,我經常得到這個錯誤,服務器停止,請諮詢我java.lang.invoke.MethodHandleStatics.newInternalError(MethodHandleStatics.java:97)

java.lang.invoke.MethodHandleStatics.newInternalError(MethodHandleStatics.java:97) 
    Exception in thread "RubyThread-3337: /usr/local/rbenv/versions/jruby-1.7.3/lib/ruby/1.9/webrick/server.rb:103" java.lang.InternalError: identity=Lambda(a0:L,a1:L,a2:L)=>{ 
     t3:L=Species_L.argL0(a0:L); 
     t4:L=ValueConversions.identity(t3:L);t4:L} 
     at java.lang.invoke.MethodHandleStatics.newInternalError(MethodHandleStatics.java:97) 
     at java.lang.invoke.LambdaForm.compileToBytecode(LambdaForm.java:460) 
     at java.lang.invoke.LambdaForm.checkInvocationCounter(LambdaForm.java:634) 
     at rubyjit.WEBrick::GenericServer$$start_thread_7B70F846F4B96CB34E341FFAE1CC88FEEAA8EA95520186210.chained_1_rescue_1$RUBY$SYNTHETIC__file__(/usr/local/rbenv/versions/jruby-1.7.3/lib/ruby/1.9/webrick/server.rb:191) 
     at rubyjit.WEBrick::GenericServer$$start_thread_7B70F846F4B96CB34E341FFAE1CC88FEEAA8EA95520186210.chained_0_ensure_1$RUBY$__ensure__(/usr/local/rbenv/versions/jruby-1.7.3/lib/ruby/1.9/webrick/server.rb) 
     at rubyjit.WEBrick::GenericServer$$start_thread_7B70F846F4B96CB34E341FFAE1CC88FEEAA8EA95520186210.block_0$RUBY$__file__(/usr/local/rbenv/versions/jruby-1.7.3/lib/ruby/1.9/webrick/server.rb:181) 
     at rubyjit$WEBrick::GenericServer$$start_thread_7B70F846F4B96CB34E341FFAE1CC88FEEAA8EA95520186210$block_0$RUBY$__file__.call(rubyjit$WEBrick::GenericServer$$start_thread_7B70F846F4B96CB34E341FFAE1CC88FEEAA8EA95520186210$block_0$RUBY$__file__) 
     at org.jruby.runtime.CompiledBlock19.yield(CompiledBlock19.java:163) 
     at org.jruby.runtime.CompiledBlock19.call(CompiledBlock19.java:91) 
     at org.jruby.runtime.Block.call(Block.java:89) 
     at org.jruby.RubyProc.call(RubyProc.java:261) 
     at org.jruby.RubyProc.call(RubyProc.java:213) 
     at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:98) 
     at java.lang.Thread.run(Thread.java:744) 
    Caused by: java.lang.OutOfMemoryError: PermGen space 
    [2014-04-19 16:37:20] ERROR Java::JavaLang::InternalError: identity=Lambda(a0:L,a1:L,a2:L)=>{ 
     t3:L=Species_L.argL0(a0:L); 
     t4:L=ValueConversions.identity(t3:L);t4:L} 
     java.lang.invoke.MethodHandleStatics.newInternalError(MethodHandleStatics.java:97) 
    [2014-04-19 16:37:21] ERROR Java::JavaLang::InternalError: guard=Lambda(a0:L,a1:L,a2:L)=>{ 
     t3:I=MethodHandle(AbstractScript,ThreadContext)boolean(a1:L,a2:L); 
     t4:L=MethodHandleImpl.selectAlternative(t3:I,(MethodHandle(AbstractScript,ThreadContext)IRubyObject),(MethodHandle(AbstractScript,ThreadContext)IRubyObject)); 

回答

0

Caused by: java.lang.OutOfMemoryError: PermGen space

permgen是內存中的一個位置,其中加載的類(顯然,在這種情況下,lambda表達式)被存儲。默認情況下它不會增長。您可以通過以下啓動選項Java(或把它放在JAVA_OPTS環境變量):

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled 

允許它卸載類,並嘗試收集的PermGen空間。當然,如果你在一個時間需要大量的加載類,可以增加與

-XX:MaxPermSize=SIZE 

128M PermGen的空間是合理的價值,但我不知道如何類和拉姆達的方式 - 重申你的申請是。

+0

這不起作用 –

+0

@ramamoorthy_villi您需要提供更多詳細信息,以使其無法正常工作。問題是否延遲?使用了多少堆/非堆? – hexafraction