mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Restore broken low memory watcher functionality in JPS process;
JPS: on LowMemory signal clear also FSCache
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
package org.jetbrains.jps.cmdline;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.LowMemoryWatcherManager;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream;
|
||||
@@ -121,6 +123,7 @@ final class BuildSession implements Runnable, CanceledStatus {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
final LowMemoryWatcherManager memWatcher = new LowMemoryWatcherManager(SharedThreadPool.getInstance());
|
||||
Throwable error = null;
|
||||
final Ref<Boolean> hasErrors = new Ref<>(false);
|
||||
final Ref<Boolean> doneSomething = new Ref<>(false);
|
||||
@@ -198,6 +201,7 @@ final class BuildSession implements Runnable, CanceledStatus {
|
||||
}
|
||||
finally {
|
||||
finishBuild(error, hasErrors.get(), doneSomething.get());
|
||||
Disposer.dispose(memWatcher);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -170,6 +170,7 @@ public class IncProjectBuilder {
|
||||
public void build(CompileScope scope, boolean forceCleanCaches) throws RebuildRequestedException {
|
||||
|
||||
final LowMemoryWatcher memWatcher = LowMemoryWatcher.register(() -> {
|
||||
myProjectDescriptor.getFSCache().clear();
|
||||
JavacMain.clearCompilerZipFileCache();
|
||||
myProjectDescriptor.dataManager.flush(false);
|
||||
myProjectDescriptor.timestamps.getStorage().force();
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package org.jetbrains.jps.build;
|
||||
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.LowMemoryWatcherManager;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ParameterizedRunnable;
|
||||
@@ -31,6 +33,7 @@ import org.jetbrains.jps.incremental.fs.BuildFSState;
|
||||
import org.jetbrains.jps.incremental.messages.BuildMessage;
|
||||
import org.jetbrains.jps.incremental.messages.CompilerMessage;
|
||||
import org.jetbrains.jps.model.JpsModel;
|
||||
import org.jetbrains.jps.service.SharedThreadPool;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
@@ -200,6 +203,7 @@ public class Standalone {
|
||||
|
||||
public static void runBuild(JpsModelLoader loader, File dataStorageRoot, MessageHandler messageHandler, List<TargetTypeBuildScope> scopes,
|
||||
boolean includeDependenciesToScope) throws Exception {
|
||||
final LowMemoryWatcherManager memWatcher = new LowMemoryWatcherManager(SharedThreadPool.getInstance());
|
||||
final BuildRunner buildRunner = new BuildRunner(loader);
|
||||
ProjectDescriptor descriptor = buildRunner.load(messageHandler, dataStorageRoot, new BuildFSState(true));
|
||||
try {
|
||||
@@ -207,6 +211,7 @@ public class Standalone {
|
||||
}
|
||||
finally {
|
||||
descriptor.release();
|
||||
Disposer.dispose(memWatcher);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import java.lang.management.MemoryNotificationInfo;
|
||||
import java.lang.management.MemoryPoolMXBean;
|
||||
import java.lang.management.MemoryType;
|
||||
import java.util.MissingResourceException;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
@@ -55,7 +56,7 @@ public class LowMemoryWatcherManager implements Disposable {
|
||||
}
|
||||
};
|
||||
|
||||
public LowMemoryWatcherManager(@NotNull ExecutorService executorService) {
|
||||
public LowMemoryWatcherManager(@NotNull Executor executorService) {
|
||||
myExecutorService = SequentialTaskExecutor.createSequentialApplicationPoolExecutor("LowMemoryWatcherManager", executorService);
|
||||
try {
|
||||
for (MemoryPoolMXBean bean : ManagementFactory.getMemoryPoolMXBeans()) {
|
||||
|
||||
Reference in New Issue
Block a user