當前位置: 首頁>>代碼示例>>Java>>正文


Java Reference類代碼示例

本文整理匯總了Java中java.lang.ref.Reference的典型用法代碼示例。如果您正苦於以下問題:Java Reference類的具體用法?Java Reference怎麽用?Java Reference使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


Reference類屬於java.lang.ref包,在下文中一共展示了Reference類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: getAndClearToCompute

import java.lang.ref.Reference; //導入依賴的package包/類
public static synchronized List<CreatorBasedLazyFixList> getAndClearToCompute(FileObject file) {
    List<Reference<CreatorBasedLazyFixList>> references = file2Creators.get(file);
    
    if (references == null) {
        return Collections.emptyList();
    }
    
    List<CreatorBasedLazyFixList> result = new ArrayList<CreatorBasedLazyFixList>();
    
    for (Reference<CreatorBasedLazyFixList> r : references) {
        CreatorBasedLazyFixList c = r.get();
        
        if (c != null) {
            result.add(c);
        }
    }
    
    references.clear();
    
    return result;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:22,代碼來源:LazyHintComputationFactory.java

示例2: processQueue

import java.lang.ref.Reference; //導入依賴的package包/類
/**
 * Removes weak keys from the map that have been enqueued
 * on the reference queue and are no longer in use.
 */
private static void processQueue(ReferenceQueue<Key> queue,
                                 ConcurrentHashMap<? extends
                                 WeakReference<Key>, ?> pdMap) {
    Reference<? extends Key> ref;
    while ((ref = queue.poll()) != null) {
        pdMap.remove(ref);
    }
}
 
開發者ID:lambdalab-mirror,項目名稱:jdk8u-jdk,代碼行數:13,代碼來源:ProtectionDomain.java

示例3: testMemoryReleased

import java.lang.ref.Reference; //導入依賴的package包/類
@SuppressWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD")
@RandomlyFails
public void testMemoryReleased() throws Exception {
    TimedWeakReference.TIMEOUT = 0;
    FileObject wd = FileUtil.toFileObject(getWorkDir());
    TestFileUtils.writeFile(wd, "pom.xml", "<project><modelVersion>4.0.0</modelVersion>"
            + "<groupId>g</groupId><artifactId>a</artifactId>"
            + "<version>0</version></project>");
    Project p = ProjectManager.getDefault().findProject(wd);
    ((NbMavenProjectImpl) p).attachUpdater();
    /* Want to avoid leaks even if this is not called for some reason:
    ((NbMavenProjectImpl) p).detachUpdater();
    */
    Reference<?> r = new WeakReference<Object>(p);
    p = null;

    Thread.sleep(5000); //something has changed and the reference only gets cleared after some time. added @RandomlyFails
    // if it keeps on failing regularly, it's a candidate for removal, the point of the test is unclear to me.
    
    assertGC("can release project after updater detached", r, Collections.singleton(wd));
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:22,代碼來源:NbMavenProjectImplTest.java

示例4: equals

import java.lang.ref.Reference; //導入依賴的package包/類
@Override
public boolean equals(Object obj) {
	if (this == obj) {
		return true;
	}
	if (dead) {
		// Post-mortem cleanup looks for this specific Reference
		// instance
		return false;
	}
	if (!(obj instanceof Reference<?>)) {
		return false;
	}
	Object oA = get();
	Object oB = ((Reference<?>) obj).get();
	if (oA == oB) {
		return true;
	}
	if (oA == null || oB == null) {
		return false;
	}
	return oA.equals(oB);
}
 
開發者ID:how2j,項目名稱:lazycat,代碼行數:24,代碼來源:ManagedConcurrentWeakHashMap.java

示例5: getAllDataShadows

import java.lang.ref.Reference; //導入依賴的package包/類
/** @return all active DataShadows or null */
private static synchronized List<BrokenDataShadow> getAllDataShadows() {
    if (allDataShadows == null || allDataShadows.isEmpty()) {
        return null;
    }
    
    List<BrokenDataShadow> ret = new ArrayList<BrokenDataShadow>(allDataShadows.size());
    Iterator<Set<Reference<BrokenDataShadow>>> it = allDataShadows.values ().iterator();
    while (it.hasNext()) {
        Set<Reference<BrokenDataShadow>> ref = it.next();
        Iterator<Reference<BrokenDataShadow>> refs = ref.iterator ();
        while (refs.hasNext ()) {
            Reference<BrokenDataShadow> r = refs.next ();
            BrokenDataShadow shadow = r.get();
            if (shadow != null) {
                ret.add(shadow);
            }
        }
    }
    
    return ret;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:23,代碼來源:BrokenDataShadow.java

示例6: findLiveManagers

import java.lang.ref.Reference; //導入依賴的package包/類
private synchronized Object findLiveManagers() {
    JavaElementFoldManager oneMgr = null;
    List<JavaElementFoldManager> result = null;
    
    for (Iterator<Reference<JavaElementFoldManager>> it = managers.iterator(); it.hasNext(); ) {
        Reference<JavaElementFoldManager> ref = it.next();
        JavaElementFoldManager fm = ref.get();
        if (fm == null) {
            it.remove();
            continue;
        }
        if (result != null) {
            result.add(fm);
        } else if (oneMgr != null) {
            result = new ArrayList<JavaElementFoldManager>(2);
            result.add(oneMgr);
            result.add(fm);
        } else {
            oneMgr = fm;
        }
    }
    return result != null ? result : oneMgr;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:24,代碼來源:JavaElementFoldManager.java

示例7: toNbTask

import java.lang.ref.Reference; //導入依賴的package包/類
NbTask toNbTask (ITask task) {
    NbTask nbTask = null;
    if (task != null) {
        synchronized (tasks) {
            Reference<NbTask> nbTaskRef = tasks.get(task);
            if (nbTaskRef != null) {
                nbTask = nbTaskRef.get();
            }
            if (nbTask == null) {
                nbTask = new NbTask(task);
                tasks.put(task, new SoftReference<NbTask>(nbTask));
            }
        }
    }
    return nbTask;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:17,代碼來源:MylynSupport.java

示例8: testCleanupSecret

import java.lang.ref.Reference; //導入依賴的package包/類
static void testCleanupSecret(String algorithm) throws Exception {
    KeyGenerator desGen = KeyGenerator.getInstance(algorithm, SunJCEProvider);
    SecretKey key = desGen.generateKey();

    // Break into the implementation to observe the key byte array.
    Class<?> keyClass = key.getClass();
    Field keyField = keyClass.getDeclaredField("key");
    keyField.setAccessible(true);
    byte[] array = (byte[])keyField.get(key);

    byte[] zeros = new byte[array.length];
    do {
        // Wait for array to be cleared;  if not cleared test will timeout
        System.out.printf("%s array: %s%n", algorithm, Arrays.toString(array));
        key = null;
        System.gc();        // attempt to reclaim the key
    } while (Arrays.compare(zeros, array) != 0);
    System.out.printf("%s array: %s%n", algorithm, Arrays.toString(array));

    Reference.reachabilityFence(key); // Keep key alive
    Reference.reachabilityFence(array); // Keep array alive
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:23,代碼來源:DESKeyCleanupTest.java

示例9: detach

import java.lang.ref.Reference; //導入依賴的package包/類
private Task detach() {
        Task t;
        synchronized (allSessions) {
            Reference<ShellSession> refS = allSessions.get(consoleDocument);
            if (refS != null && refS.get() == this) {
                allSessions.remove(consoleDocument);
                detached = true;
            } else {
                return Task.EMPTY;
            }
        }
//        closed = true;
        model.detach();
        closed();
        if (exec != null) {
            FORCE_CLOSE_RP.post(this::forceCloseStreams, 300);
        }
        // leave the model
        gsm.getGuardedSections().forEach((GuardedSection gs) -> gs.removeSection());
        return sendJShellClose();
    }
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:22,代碼來源:ShellSession.java

示例10: testLookupsRelease

import java.lang.ref.Reference; //導入依賴的package包/類
public void testLookupsRelease() {
    int idA = System.identityHashCode(MimeLookup.getLookup(MimePath.get("text/x-java")));

    TestUtilities.consumeAllMemory();
    TestUtilities.gc();

    MimePath mp = MimePath.get("text/x-java");
    Object obj = MimeLookup.getLookup(mp);
    int idB = System.identityHashCode(obj);
    assertEquals("Lookup instance was lost", idA, idB);
    
    // Force the MimePath instance to be dropped from the list of recently used
    for (int i = 0; i < MimePath.MAX_LRU_SIZE; i++) {
        MimePath.get("text/x-nonsense-" + i);
    }

    Reference<Object> ref = new WeakReference<Object>(obj);
    obj = null;
    mp = null;
    assertGC("Can disappear", ref);
    
    int idC = System.identityHashCode(MimeLookup.getLookup(MimePath.get("text/x-java")));
    assertTrue("Lookup instance was not released", idA != idC);
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:25,代碼來源:MimeLookupMemoryGCTest.java

示例11: purge

import java.lang.ref.Reference; //導入依賴的package包/類
/**
 * Purges the specified reference
 * @param ref  the reference to purge
 * @return true or false
 */
boolean purge(final Reference<?> ref) {
    boolean r = parent.keyType != ReferenceStrength.HARD && key == ref;
    r = r || parent.valueType != ReferenceStrength.HARD && value == ref;
    if (r) {
        if (parent.keyType != ReferenceStrength.HARD) {
            ((Reference<?>) key).clear();
        }
        if (parent.valueType != ReferenceStrength.HARD) {
            ((Reference<?>) value).clear();
        } else if (parent.purgeValues) {
            value = null;
        }
    }
    return r;
}
 
開發者ID:funkemunky,項目名稱:HCFCore,代碼行數:21,代碼來源:AbstractReferenceMap.java

示例12: getJavacApiJarClasspath

import java.lang.ref.Reference; //導入依賴的package包/類
private static ClassPath getJavacApiJarClasspath() {
    Reference<ClassPath> r = javacApiClasspath;
    ClassPath res = r.get();
    if (res != null) {
        return res;
    }
    if (r == NONE) {
        return null;
    }
    CodeSource codeSource = Modifier.class.getProtectionDomain().getCodeSource();
    URL javacApiJar = codeSource != null ? codeSource.getLocation() : null;
    if (javacApiJar != null) {
        Logger.getLogger(DeclarativeHintsParser.class.getName()).log(Level.FINE, "javacApiJar={0}", javacApiJar);
        File aj = FileUtil.archiveOrDirForURL(javacApiJar);
        if (aj != null) {
            res = ClassPathSupport.createClassPath(FileUtil.urlForArchiveOrDir(aj));
            javacApiClasspath = new WeakReference<>(res);
            return res;
        }
    }
    javacApiClasspath = NONE;
    return null;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:24,代碼來源:DeclarativeHintsParser.java

示例13: cleanUp

import java.lang.ref.Reference; //導入依賴的package包/類
/**
 * Repeatedly dequeues references from the queue and invokes {@link
 * FinalizableReference#finalizeReferent()} on them until the queue is empty. This method is a
 * no-op if the background thread was created successfully.
 */
void cleanUp() {
  if (threadStarted) {
    return;
  }

  Reference<?> reference;
  while ((reference = queue.poll()) != null) {
    /*
     * This is for the benefit of phantom references. Weak and soft references will have already
     * been cleared by this point.
     */
    reference.clear();
    try {
      ((FinalizableReference) reference).finalizeReferent();
    } catch (Throwable t) {
      logger.log(Level.SEVERE, "Error cleaning up after reference.", t);
    }
  }
}
 
開發者ID:s-store,項目名稱:sstore-soft,代碼行數:25,代碼來源:FinalizableReferenceQueue.java

示例14: testNodeListenersDetachedAtFinalizeIssue58065

import java.lang.ref.Reference; //導入依賴的package包/類
public void testNodeListenersDetachedAtFinalizeIssue58065() throws Exception {
    CookieNode node = new CookieNode();
    SimpleCookieAction2 sca = new SimpleCookieAction2();
    Action action = sca.createContextAwareInstance(node.getLookup());
    
    class NodeListenerMemoryFilter implements MemoryFilter {
        public int numofnodelisteners = 0;
        public boolean reject(Object obj) {
            numofnodelisteners += (obj instanceof NodeListener)?1:0;
            return !((obj instanceof EventListenerList) | (obj instanceof Object[]));
        }
    }
    NodeListenerMemoryFilter filter = new NodeListenerMemoryFilter();
    assertSize("",Arrays.asList( new Object[] {node} ),1000000,filter);
    assertTrue("Node is expected to have a NodeListener attached", filter.numofnodelisteners > 0);
    
    Reference actionref = new WeakReference(sca);
    sca = null;
    action = null;
    assertGC("CookieAction is supposed to be GCed", actionref);
    
    NodeListenerMemoryFilter filter2 = new NodeListenerMemoryFilter();
    assertSize("",Arrays.asList( new Object[] {node} ),1000000,filter2);
    assertEquals("Node is expected to have no NodeListener attached", 0, filter2.numofnodelisteners);
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:26,代碼來源:CookieAction2Test.java

示例15: testSourceForDocumentGCed

import java.lang.ref.Reference; //導入依賴的package包/類
public void testSourceForDocumentGCed() throws IOException {
    FileObject file = createFileObject("plain.txt", getName(), "\n");
    Document doc = openDocument(file);
    Source source = Source.create(doc);
    assertNotNull("No Source for " + doc, source);

    Reference<Source> sourceRef = new WeakReference<Source>(source);
    Reference<Document> docRef = new WeakReference<Document>(doc);
    Reference<FileObject> fileRef = new WeakReference<FileObject>(file);

    source = null;
    assertGC("Source can't be GCed", sourceRef);

    doc = null;
    assertGC("Document can't be GCed", docRef);

    file = null;
    assertGC("FileObject can't be GCed", fileRef);
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:20,代碼來源:SourceTest.java


注:本文中的java.lang.ref.Reference類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。