
获取通过 ClassLoaderCreator 创建的 ClassLoader 实例 ClassLoaderCreator信息,包括有关本机库和资源的信息。 构造器摘要 建设者 描述 ClassLoaderHelper() 方法总结 修饰符和类型 方法 描述 静态字符串 findNativeLibrary(ClassLoader classLoader,字符串名称) 搜索指定的本机库,该库由通过 ClassLoaderCreator创建的 ClassLoader 实例加载。 静态枚举 < URL > findResources(ClassLoader classLoader,字符串名称) 搜索通过ClassLoaderCreator创建的 ClassLoader 实例已加载的资源。 静态字符串 toString(ClassLoader classLoader) 获取有关通过 ClassLoaderCreator创建的指定ClassLoader实例的信息。 从类 java.lang 继承的方法。目的 clone,equals,finalize,getClass,hashCode,notify,notifyAll,toString,wait,wait,wait 构造器详细信息 ClassLoaderHelper 公共ClassLoaderHelper() 方法细节 findResources 公共静态枚举 < URL > findResources(ClassLoader classLoader,字符串名称)抛出IllegalArgumentException 搜索通过ClassLoaderCreator创建的 ClassLoader 实例已加载的资源 。 参数: 参数名称 参数说明 classLoader 指示通过 ClassLoaderCreator 创建的 ClassLoader 实例。 名称 指示要搜索的资源的名称。 返回值: 返回所有与名称匹配的URL(如果有);否则返回 null。 抛出: 抛出名称 抛出说明 IllegalArgumentException 如果传递的 ClassLoader 实例不是通过 ClassLoaderCreator 创建的,则抛出此异常。 findNativeLibrary 公共静态字符串 findNativeLibrary(ClassLoader classLoader,字符串名称)抛出IllegalArgumentException 搜索指定的本机库,该库由通过 ClassLoaderCreator 创建的 ClassLoader 实例 加载。 参数: 参数名称 参数说明 classLoader 指示通过 ClassLoaderCreator 创建的 ClassLoader 实例。 名称 指示要搜索的本机库的名称。 返回值: 如果找到匹配项,则返回本机库路径;否则返回 null。 抛出: 抛出名称 抛出说明 IllegalArgumentException 如果传递的 ClassLoader 实例不是通过 ClassLoaderCreator 创建的,则抛出此异常。 公共静态字符串 toString((ClassLoader classLoader) 获取有关通过 ClassLoaderCreator 创建的指定 ClassLoader 实例的信息 。 参数: 参数名称 参数说明 classLoader 指示通过 ClassLoaderCreator 创建的 ClassLoader 实例。 返回值: 返回有关 ClassLoader 实例的信息。


为应用程序模块提供 Ark 编译器和运行时接口。 课程总结 类 描述 ClassLoaderCreator 创建一个 ClassLoader 实例,该实例从 jar 文件动态加载类。 ClassLoaderHelper 获取通过 ClassLoaderCreator 创建的 ClassLoader 实例加载的信息,包括有关本机库和资源的信息。 HotFixClassLoader 提供应用第三方热补丁的功能。

注释弱参考对象。 此类提供了使用弱引用注释字段的方法。此类字段可由 RC / GC 回收。回收这些字段后,读取它们时将返回 null。这允许字段由代码逻辑正确处理。 以 HashMap 的 entrySet 为例。内部类和外部类对象形成循环引用。因此,您不能使用 UnownedOuter 来注释内部类,因为 entrySet 可以作为 Set 传递给 HashMap 的外部。在这种情况下,您可以将 entrySet 注释为弱引用。如果 entrySet 被回收,则可以使用 entrySet()方法返回无状态 entrySet 对象。 请参考以下示例代码: public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { ...; @Weak transient Set<Map.Entry<K,V>> entrySet; ...; public Set<Map.Entry<K,V>> entrySet() { Set<Map.Entry<K,V>> es; return (es = entrySet) == null ? (entrySet = new EntrySet()) : es; } }

注释方法或单个局部变量。 注释单个局部变量意味着从引用计数中排除此变量的实例引用。注释方法意味着撤消该方法对引用对象的所有局部变量(显式或隐式)的所有权,并从引用对象的引用计数中排除这些变量的引用。 UnownedLocal 的目的是减少 RC 开销,而不是消除循环引用。 对于在多线程模式下不安全的 HashMap.containsValue 方法,不允许其他线程同步修改 HashMap。因此,对 HashMap 中内部表和节点的读取不包括在引用计数中,因此不会释放所引用的对象。在这种情况下,可以使用 UnownedLocal 在方法中注释对象。 请参考以下示例代码: @UnownedLocal public boolean containsValue(Object value) { Node<K,V>[] tab; V v; if ((tab = table) != null && size > 0) { for (int i = 0; i < tab.length; ++i) { for (Node<K,V> e = tab[i]; e != null; e = e.next) { if ((v = e.value) == value || (value != null && value.equals(v))) return true; } } } return false; } public boolean containsValue(Object value) { Node<K,V>[] @Unowned tab; V @Unowned v; if ((tab = table) != null && size > 0) { for (int i = 0; i < tab.length; ++i) { for (Node<K,V> e = tab[i]; e != null; e =...




提供利用 Java 的注释机制注释所需变量和类型的类,从而消除循环引用并提高性能。 相关的类如下:常驻,Unowned,UnownedLocal,UnownedOuter和弱。 注释类型摘要 注释类型 描述 常驻 注释持久性内存对象。 无人 注释没有所有权的对象以消除循环引用。 本地无人 注释方法或单个局部变量。 无主外层 注释一个类以消除循环引用。 弱 注释弱参考对象。

注释一个类以消除循环引用。 注释内部类意味着删除其对引用的外部对象的所有权,从而使引用不包括在引用计数中。匿名内部类可以使用内部方法进行注释。 此类可以解决无法注释外部类实例的字段的问题,因为当 Java 内部类隐式捕获该字段时,没有提供显式声明。如果内部类不能定义为静态嵌套类,则必须使用外部类实例,并且可以使用 UnownedOuter 注释内部类以消除循环引用。 此类的不正确使用可能导致与未拥有相同的结果,从而导致引用对象的早期释放。 请参考以下示例代码: class Outer{ @UnownedOuter private class Innert { ...; } Private Runnable r = new Runnable() { @Override @UnownedOuter Public void run() { ...; } } }