diff options
author | John Firebaugh <john_firebaugh@us.ibm.com> | 2011-05-17 15:07:32 -0700 |
---|---|---|
committer | John Firebaugh <john_firebaugh@us.ibm.com> | 2011-05-18 11:51:09 -0700 |
commit | 1a9725371131300e3230b4b9c14e669d334f4152 (patch) | |
tree | 71351cad3478b74667a0658cc19badbe61e2ec3f /java/src/json/ext/ParserService.java | |
parent | 65d259b09e1256e56f301d473a9a083315dc305d (diff) | |
download | json-1a9725371131300e3230b4b9c14e669d334f4152.tar.gz |
Fix memory leak when used from multiple JRuby runtimes.
Diffstat (limited to 'java/src/json/ext/ParserService.java')
-rw-r--r-- | java/src/json/ext/ParserService.java | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/java/src/json/ext/ParserService.java b/java/src/json/ext/ParserService.java index e0805a7..f2ecae1 100644 --- a/java/src/json/ext/ParserService.java +++ b/java/src/json/ext/ParserService.java @@ -7,6 +7,7 @@ package json.ext; import java.io.IOException; +import java.lang.ref.WeakReference; import org.jruby.Ruby; import org.jruby.RubyClass; @@ -23,8 +24,8 @@ public class ParserService implements BasicLibraryService { runtime.getLoadService().require("json/common"); RuntimeInfo info = RuntimeInfo.initRuntime(runtime); - info.jsonModule = runtime.defineModule("JSON"); - RubyModule jsonExtModule = info.jsonModule.defineModuleUnder("Ext"); + info.jsonModule = new WeakReference<RubyModule>(runtime.defineModule("JSON")); + RubyModule jsonExtModule = info.jsonModule.get().defineModuleUnder("Ext"); RubyClass parserClass = jsonExtModule.defineClassUnder("Parser", runtime.getObject(), Parser.ALLOCATOR); |