Package com.clickhouse.data
Class UnloadableClassLoader
java.lang.Object
java.lang.ClassLoader
com.clickhouse.data.UnloadableClassLoader
Custom class loader for generated classes. It uses a thread-safe
WeakHashMap to maintain relationship between class name(String) and
class content(byte[]). The class will be only unloaded once there's no place
referring to the class name and GC is triggered.-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDefault constructor usingThread.getContextClassLoader()as parent.UnloadableClassLoader(ClassLoader parent) Constructs an unloadable class loader with specified parent class loader. -
Method Summary
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
Field Details
-
HAS_ASM
public static final boolean HAS_ASM
-
-
Constructor Details
-
UnloadableClassLoader
public UnloadableClassLoader()Default constructor usingThread.getContextClassLoader()as parent. -
UnloadableClassLoader
Constructs an unloadable class loader with specified parent class loader.- Parameters:
parent- optional class loader
-
-
Method Details
-
addClass
Adds a generated class.- Parameters:
name- non-empty class namebytes- non-empty byte array representing the class
-
unloadClass
Explicitly unloads a generated class.- Parameters:
name- non-empty class name
-
findClass
- Overrides:
findClassin classClassLoader- Throws:
ClassNotFoundException
-
loadClass
- Overrides:
loadClassin classClassLoader- Throws:
ClassNotFoundException
-