OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file | 3 // BSD-style license that can be found in the LICENSE file |
4 | 4 |
5 part of repositories; | 5 part of repositories; |
6 | 6 |
7 class TopRetainingInstancesRepository | 7 class TopRetainingInstancesRepository |
8 implements M.TopRetainingInstancesRepository { | 8 implements M.TopRetainingInstancesRepository { |
9 Future<Iterable<M.RetainingObject>> get(M.IsolateRef i, M.ClassRef c) async { | 9 Future<Iterable<M.RetainingObject>> get(M.IsolateRef i, M.ClassRef c) async { |
10 S.Isolate isolate = i as S.Isolate; | 10 S.Isolate isolate = i as S.Isolate; |
11 S.Class cls = c as S.Class; | 11 S.Class cls = c as S.Class; |
12 assert(isolate != null); | 12 assert(isolate != null); |
13 assert(cls != null); | 13 assert(cls != null); |
14 final raw = await isolate.fetchHeapSnapshot(true).last; | 14 final raw = await isolate.fetchHeapSnapshot(true).last; |
15 final snapshot = new HeapSnapshot(); | 15 final snapshot = new HeapSnapshot(); |
16 await snapshot.loadProgress(isolate, raw).last; | 16 await snapshot.loadProgress(isolate, raw).last; |
17 return (await Future.wait(snapshot.getMostRetained(isolate, | 17 return (await Future.wait( |
18 classId: cls.vmCid, | 18 snapshot.getMostRetained(isolate, classId: cls.vmCid, limit: 10))) |
19 limit: 10))) | 19 .map((object) => new S.RetainingObject(object)); |
20 .map((object) => new S.RetainingObject(object)); | |
21 } | 20 } |
22 } | 21 } |
OLD | NEW |