summaryrefslogtreecommitdiff
path: root/java/src/json/ext/ParserService.java
diff options
context:
space:
mode:
authorJohn Firebaugh <john_firebaugh@us.ibm.com>2011-05-17 15:07:32 -0700
committerJohn Firebaugh <john_firebaugh@us.ibm.com>2011-05-18 11:51:09 -0700
commit1a9725371131300e3230b4b9c14e669d334f4152 (patch)
tree71351cad3478b74667a0658cc19badbe61e2ec3f /java/src/json/ext/ParserService.java
parent65d259b09e1256e56f301d473a9a083315dc305d (diff)
downloadjson-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.java5
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);