IC: Load one class at a time when snapshotting classpath
Previously, when snapshotting the classpath with `ClasspathEntrySnapshotTransform`, for each jar we load all classes in memory at once. This was needed to detect inaccessible classes (classes that don't impact incremental compilation and therefore don't need to be snapshotted). To reduce memory consumption, this commit updates the algorithm such that we can now load one class at a time while still being able to detect inaccessible classes. In addition, we now read jar files with `java.util.zip.ZipFile` API instead of `java.util.zip.ZipInputStream` to avoid current JDK bugs with `ZipInputStream` (e.g., https://bugs.openjdk.org/browse/JDK-8298530). ^KT-57757 Fixed ^KT-57767 Fixed
This commit is contained in:
+2
-3
@@ -69,10 +69,9 @@ enum class BuildTime(val parent: BuildTime? = null, val readableString: String)
|
||||
SAVE_SHRUNK_CURRENT_CLASSPATH_SNAPSHOT(SHRINK_AND_SAVE_CURRENT_CLASSPATH_SNAPSHOT_AFTER_COMPILATION, "Save shrunk current classpath snapshot"),
|
||||
TASK_FINISH_LISTENER_NOTIFICATION(readableString = "Task finish event notification"),
|
||||
CLASSPATH_ENTRY_SNAPSHOT_TRANSFORM(readableString = "Classpath entry snapshot transform"),
|
||||
LOAD_CLASSES(parent = CLASSPATH_ENTRY_SNAPSHOT_TRANSFORM, "Load classes"),
|
||||
LOAD_CLASSES_PATHS_ONLY(parent = CLASSPATH_ENTRY_SNAPSHOT_TRANSFORM, "Load classes (paths only)"),
|
||||
SNAPSHOT_CLASSES(parent = CLASSPATH_ENTRY_SNAPSHOT_TRANSFORM, "Snapshot classes"),
|
||||
READ_CLASSES_BASIC_INFO(parent = SNAPSHOT_CLASSES, "Read basic information about classes"),
|
||||
FIND_INACCESSIBLE_CLASSES(parent = SNAPSHOT_CLASSES, "Find inaccessible classes"),
|
||||
LOAD_CONTENTS_OF_CLASSES(parent = SNAPSHOT_CLASSES, "Load contents of classes"),
|
||||
SNAPSHOT_KOTLIN_CLASSES(parent = SNAPSHOT_CLASSES, "Snapshot Kotlin classes"),
|
||||
SNAPSHOT_JAVA_CLASSES(parent = SNAPSHOT_CLASSES, "Snapshot Java classes"),
|
||||
SAVE_CLASSPATH_ENTRY_SNAPSHOT(parent = CLASSPATH_ENTRY_SNAPSHOT_TRANSFORM, "Save classpath entry snapshot"),
|
||||
|
||||
Reference in New Issue
Block a user