удостоверьтесь, что Вы имеете в распоряжении ВЕСЬ пустой minimals. иначе это не работало бы:) http://material.angular.io/guide/getting-started
Вы пропускаете MatDialogRef в своем конструкторе Вашего диалогового окна
import { MatDialogRef } from '@angular/material';
constructor(public dialogRef: MatDialogRef) {
}
основной компонент страницы
, вызов как это не возможен (UI не готов затем):
constructor(public dialog: MatDialog) {
this.openDialog();
}
это должно быть (или afterviewinit)
import { OnInit } from '@angular/core';
export class AppComponent implements OnInit {
...
ngOnInit() {
this.openDialog();
}
...
}
Их метод гарантирует, что, даже если другой код все еще содержит ссылки на конкретные узлы, другие узлы будут GC'ed.
Иначе даже единственная внешняя ссылка на один из узлов препятствовала бы тому, чтобы вся цепочка была собрана.
Кроме того, другие операции в списке могли бы продолжаться одновременно (например, представления через subList()
или Collections.unmodifiableList()
, итераторы), и это гарантирует, чтобы те вещи чувствовали список как "пустой" сразу.
IIRC, это было изменением, внесенным в JDK6 для помощи производительности определенных алгоритмов GC (поколений). Часто, List
самостоятельно и более старые узлы будут в старшем поколении, чем некоторые из других узлов. Молодые поколения будут собираться более часто, так что в итоге молодые узлы копируются о том, прежде чем будет обнаружено, что все узлы являются мусором.
Таким образом, это - незначительная оптимизация производительности. Оптимизация производительности памяти часто немного нечетна в этом, это не код, который вызывает проблему, которая занимает дополнительное время для выполнения.
Я как раз размышлял по этому поводу в своем блоге о разработке игр. Спасибо за ответ. Я бы сказал, что уязвимость узла была сомнительным допуском при проектировании. Также отрывочно, что альтернативные представления в списке (итераторы и т. Д.) Будут полагаться на отключение узла до отказа. Вместо того, чтобы полагаться на этот побочный эффект, вложенные представления в списке должны проверять счетчик изменений. В любом случае, теперь я понимаю, почему они этим придерживаются.