4442 |
|
assertTrue(neverCompleted.thenRun(() -> {}).cancel(true)); |
4443 |
|
} |
4444 |
|
|
4445 |
+ |
/** |
4446 |
+ |
* Checks for garbage retention when MinimalStage.toCompletableFuture() |
4447 |
+ |
* is invoked many times. |
4448 |
+ |
* 8161600: Garbage retention when source CompletableFutures are never completed |
4449 |
+ |
* |
4450 |
+ |
* As of 2016-07, fails with OOME: |
4451 |
+ |
* ant -Dvmoptions=-Xmx8m -Djsr166.expensiveTests=true -Djsr166.tckTestClass=CompletableFutureTest -Djsr166.methodFilter=testToCompletableFutureGarbageRetention tck |
4452 |
+ |
*/ |
4453 |
+ |
public void testToCompletableFutureGarbageRetention() throws Throwable { |
4454 |
+ |
final int n = expensiveTests ? 900_000 : 10; |
4455 |
+ |
CompletableFuture<Integer> neverCompleted = new CompletableFuture<>(); |
4456 |
+ |
CompletionStage minimal = neverCompleted.minimalCompletionStage(); |
4457 |
+ |
for (int i = 0; i < n; i++) |
4458 |
+ |
assertTrue(minimal.toCompletableFuture().cancel(true)); |
4459 |
+ |
} |
4460 |
+ |
|
4461 |
|
// static <U> U join(CompletionStage<U> stage) { |
4462 |
|
// CompletableFuture<U> f = new CompletableFuture<>(); |
4463 |
|
// stage.whenComplete((v, ex) -> { |