鸿蒙OS 方舟系统概述
为应用程序模块提供 Ark 编译器和运行时接口。 课程总结 类 描述 ClassLoaderCreator 创建一个 ClassLoader 实例,该实例从 jar 文件动态加载类。 ClassLoaderHelper 获取通过 ClassLoaderCreator 创建的 ClassLoader 实例加载的信息,包括有关本机库和资源的信息。 HotFixClassLoader 提供应用第三方热补丁的功能。
鸿蒙OS 弱
注释弱参考对象。 此类提供了使用弱引用注释字段的方法。此类字段可由 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; } }
鸿蒙OS 本地Unowned
注释方法或单个局部变量。 注释单个局部变量意味着从引用计数中排除此变量的实例引用。注释方法意味着撤消该方法对引用对象的所有局部变量(显式或隐式)的所有权,并从引用对象的引用计数中排除这些变量的引用。 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 =...
鸿蒙OS java.Util class
鸿蒙OS java.Util interface
鸿蒙OS java.Util
鸿蒙OS 方舟注释概述
提供利用 Java 的注释机制注释所需变量和类型的类,从而消除循环引用并提高性能。 相关的类如下:常驻,Unowned,UnownedLocal,UnownedOuter和弱。 注释类型摘要 注释类型 描述 常驻 注释持久性内存对象。 无人 注释没有所有权的对象以消除循环引用。 本地无人 注释方法或单个局部变量。 无主外层 注释一个类以消除循环引用。 弱 注释弱参考对象。
鸿蒙OS 外层UnownedOuter
注释一个类以消除循环引用。 注释内部类意味着删除其对引用的外部对象的所有权,从而使引用不包括在引用计数中。匿名内部类可以使用内部方法进行注释。 此类可以解决无法注释外部类实例的字段的问题,因为当 Java 内部类隐式捕获该字段时,没有提供显式声明。如果内部类不能定义为静态嵌套类,则必须使用外部类实例,并且可以使用 UnownedOuter 注释内部类以消除循环引用。 此类的不正确使用可能导致与未拥有相同的结果,从而导致引用对象的早期释放。 请参考以下示例代码: class Outer{ @UnownedOuter private class Innert { ...; } Private Runnable r = new Runnable() { @Override @UnownedOuter Public void run() { ...; } } }
鸿蒙OS Unowned
注释没有所有权的对象以消除循环引用。 如果注释了字段成员或局部变量,则它们将不具有对引用对象的所有权,并且它们的引用也将不包括在引用对象的引用计数中。 此类支持以下常见数据结构的注释:双链表,TreeMap 和 Linked HashMap。 此类的不正确使用可能会导致早期释放引用的对象。 以 TreeMap 数据结构为例,可以将父节点标注为“无主”,而不能标注左右节点: static final class TreeMapEntry<K,V> implements Map.Entry<K,V> { K key; V value; TreeMapEntry<K,V> left; TreeMapEntry<K,V> right; @Unowned TreeMapEntry<K,V> parent; boolean color = BLACK; ...; }

国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码



