1373259f2960b2fa508e524a035818b390f99e574Diego Perez/*
2373259f2960b2fa508e524a035818b390f99e574Diego Perez * Copyright (C) 2016 The Android Open Source Project
3373259f2960b2fa508e524a035818b390f99e574Diego Perez *
4373259f2960b2fa508e524a035818b390f99e574Diego Perez * Licensed under the Apache License, Version 2.0 (the "License");
5373259f2960b2fa508e524a035818b390f99e574Diego Perez * you may not use this file except in compliance with the License.
6373259f2960b2fa508e524a035818b390f99e574Diego Perez * You may obtain a copy of the License at
7373259f2960b2fa508e524a035818b390f99e574Diego Perez *
8373259f2960b2fa508e524a035818b390f99e574Diego Perez *      http://www.apache.org/licenses/LICENSE-2.0
9373259f2960b2fa508e524a035818b390f99e574Diego Perez *
10373259f2960b2fa508e524a035818b390f99e574Diego Perez * Unless required by applicable law or agreed to in writing, software
11373259f2960b2fa508e524a035818b390f99e574Diego Perez * distributed under the License is distributed on an "AS IS" BASIS,
12373259f2960b2fa508e524a035818b390f99e574Diego Perez * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13373259f2960b2fa508e524a035818b390f99e574Diego Perez * See the License for the specific language governing permissions and
14373259f2960b2fa508e524a035818b390f99e574Diego Perez * limitations under the License.
15373259f2960b2fa508e524a035818b390f99e574Diego Perez */
16373259f2960b2fa508e524a035818b390f99e574Diego Perez
17373259f2960b2fa508e524a035818b390f99e574Diego Perezpackage com.android.layoutlib.bridge.intensive.util;
18373259f2960b2fa508e524a035818b390f99e574Diego Perez
19373259f2960b2fa508e524a035818b390f99e574Diego Perezimport java.lang.ref.WeakReference;
20373259f2960b2fa508e524a035818b390f99e574Diego Perez
21373259f2960b2fa508e524a035818b390f99e574Diego Perezpublic class TestUtils {
22373259f2960b2fa508e524a035818b390f99e574Diego Perez    public static void gc() {
23373259f2960b2fa508e524a035818b390f99e574Diego Perez        // See RuntimeUtil#gc in jlibs (http://jlibs.in/)
24373259f2960b2fa508e524a035818b390f99e574Diego Perez        Object obj = new Object();
25373259f2960b2fa508e524a035818b390f99e574Diego Perez        WeakReference ref = new WeakReference<>(obj);
26373259f2960b2fa508e524a035818b390f99e574Diego Perez        //noinspection UnusedAssignment
27373259f2960b2fa508e524a035818b390f99e574Diego Perez        obj = null;
28373259f2960b2fa508e524a035818b390f99e574Diego Perez        while (ref.get() != null) {
29373259f2960b2fa508e524a035818b390f99e574Diego Perez            System.gc();
30373259f2960b2fa508e524a035818b390f99e574Diego Perez            System.runFinalization();
31373259f2960b2fa508e524a035818b390f99e574Diego Perez        }
32373259f2960b2fa508e524a035818b390f99e574Diego Perez
33373259f2960b2fa508e524a035818b390f99e574Diego Perez        System.gc();
34373259f2960b2fa508e524a035818b390f99e574Diego Perez        System.runFinalization();
35373259f2960b2fa508e524a035818b390f99e574Diego Perez    }
36373259f2960b2fa508e524a035818b390f99e574Diego Perez}
37