From c44230b679db1432477f1c6d380a73c091ddcfff Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Sun, 17 Nov 2013 21:36:43 +0100 Subject: [PATCH] switch off content cache (low hit rate) to save some memory --- .../jps/javac/OptimizedFileManager.java | 87 +++++++++--------- .../jps/javac/OptimizedFileManager17.java | 28 ++++-- jps/lib/optimizedFileManager.jar | Bin 21051 -> 21676 bytes 3 files changed, 64 insertions(+), 51 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager.java b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager.java index 2408290a3f4a..c63614e17895 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager.java +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager.java @@ -44,10 +44,12 @@ class OptimizedFileManager extends DefaultFileManager { private boolean myUseZipFileIndex; private final Map myArchives; private final Map myIsFile = new HashMap(); - private final Map> myContentCache = new HashMap>(); private final Map myDirectoryCache = new HashMap(); public static final File[] NULL_FILE_ARRAY = new File[0]; + private static final boolean ourUseContentCache = Boolean.valueOf(System.getProperty("javac.use.content.cache", "false")); + private final Map> myContentCache = ourUseContentCache? new HashMap>() : Collections.>emptyMap(); + public OptimizedFileManager() throws Throwable { super(new Context(), true, null); final Field archivesField = DefaultFileManager.class.getDeclaredField("archives"); @@ -352,56 +354,36 @@ class OptimizedFileManager extends DefaultFileManager { } public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException { - SoftReference r = myContentCache.get(this); - CharBuffer cb = (r == null ? null : r.get()); - if (cb == null) { - InputStream in = new FileInputStream(f); - try { - final ByteBuffer bb = makeByteBuffer(in); - JavaFileObject prev = log.useSource(this); - try { - cb = decode(bb, ignoreEncodingErrors); - } - finally { - log.useSource(prev); - } - myByteBufferCache.put(bb); // save for next time + CharBuffer cb; + if (ourUseContentCache) { + SoftReference ref = myContentCache.get(this); + cb = (ref != null) ? ref.get() : null; + if (cb == null) { + cb = loadFileContent(ignoreEncodingErrors); if (!ignoreEncodingErrors) { myContentCache.put(this, new SoftReference(cb)); } } - finally { - in.close(); - } + } + else { + cb = loadFileContent(ignoreEncodingErrors); } return cb; } - //public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException { - // final String encodingName = getEncodingName(); - // SoftReference r = myContentCache.get(this); - // CharBuffer cb = (r == null ? null : r.get()); - // if (cb == null) { - // InputStream in = new FileInputStream(f); - // try { - // JavaFileObject prev = log.useSource(this); - // try { - // final char[] chars = FileUtil.loadFileText(f, encodingName); - // cb = CharBuffer.wrap(chars); - // } - // finally { - // log.useSource(prev); - // } - // if (!ignoreEncodingErrors) { - // myContentCache.put(this, new SoftReference(cb)); - // } - // } - // finally { - // in.close(); - // } - // } - // return cb; - //} + private CharBuffer loadFileContent(boolean ignoreEncodingErrors) throws IOException { + final InputStream in = new FileInputStream(f); + final ByteBuffer bb = makeByteBuffer(in); + JavaFileObject prev = log.useSource(this); + try { + return decode(bb, ignoreEncodingErrors); + } + finally { + log.useSource(prev); + myByteBufferCache.put(bb); // save for next time + in.close(); + } + } @Override public boolean equals(Object other) { @@ -540,7 +522,26 @@ class OptimizedFileManager extends DefaultFileManager { void put(ByteBuffer x) { myCached.set(x); } + + void clear() { + myCached.set(null); + } } private final ByteBufferCache myByteBufferCache = new ByteBufferCache(); + + public void close() { + try { + super.close(); + } + finally { + // archives are cleared in super.close() + if (ourUseContentCache) { + myContentCache.clear(); + } + myDirectoryCache.clear(); + myByteBufferCache.clear(); + myIsFile.clear(); + } + } } diff --git a/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java index 4e7b99a82e14..95fcd7d9ffa1 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java +++ b/jps/jps-builders/src/org/jetbrains/jps/javac/OptimizedFileManager17.java @@ -52,7 +52,8 @@ class OptimizedFileManager17 extends com.sun.tools.javac.file.JavacFileManager { private static final boolean isOS2 = _OS_NAME.startsWith("os/2") || _OS_NAME.startsWith("os2"); private static final boolean isMac = _OS_NAME.startsWith("mac"); private static final boolean isFileSystemCaseSensitive = !isWindows && !isOS2 && !isMac; - + private static final boolean ourUseContentCache = Boolean.valueOf(System.getProperty("javac.use.content.cache", "false")); + public OptimizedFileManager17() throws Throwable { super(new Context(), true, null); final Field archivesField = com.sun.tools.javac.file.JavacFileManager.class.getDeclaredField("archives"); @@ -386,22 +387,24 @@ class OptimizedFileManager17 extends com.sun.tools.javac.file.JavacFileManager { } public CharBuffer getCharContent(boolean ignoreEncodingErrors) throws IOException { - CharBuffer cb = fileManager.getCachedContent(this); + CharBuffer cb = ourUseContentCache? fileManager.getCachedContent(this) : null; if (cb == null) { InputStream in = new FileInputStream(file); try { - ByteBuffer bb = fileManager.makeByteBuffer(in); - JavaFileObject prev = fileManager.log.useSource(this); + final ByteBuffer bb = fileManager.makeByteBuffer(in); + final JavaFileObject prev = fileManager.log.useSource(this); try { cb = fileManager.decode(bb, ignoreEncodingErrors); - } finally { + } + finally { fileManager.log.useSource(prev); } fileManager.recycleByteBuffer(bb); - if (!ignoreEncodingErrors) { + if (ourUseContentCache && !ignoreEncodingErrors) { fileManager.cache(this, cb); } - } finally { + } + finally { in.close(); } } @@ -409,5 +412,14 @@ class OptimizedFileManager17 extends com.sun.tools.javac.file.JavacFileManager { } } - + public void close() { + try { + super.close(); + } + finally { + // archives are cleared in super.close() + myDirectoryCache.clear(); + myIsFile.clear(); + } + } } diff --git a/jps/lib/optimizedFileManager.jar b/jps/lib/optimizedFileManager.jar index f7d95998d3c6ec373c4f6424b988020423767e7c..55b4e61617f58cb76abd51277a85e06d46eb0439 100644 GIT binary patch delta 20302 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ø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

PvRjSqn7Pne|KszSY@W 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