1da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier/*
2da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * Copyright (C) 2016 The Android Open Source Project
3da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier *
4da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * Licensed under the Apache License, Version 2.0 (the "License");
5da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * you may not use this file except in compliance with the License.
6da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * You may obtain a copy of the License at
7da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier *
8da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier *      http://www.apache.org/licenses/LICENSE-2.0
9da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier *
10da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * Unless required by applicable law or agreed to in writing, software
11da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * distributed under the License is distributed on an "AS IS" BASIS,
12da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * See the License for the specific language governing permissions and
14da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier * limitations under the License.
15da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier */
16da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier
17da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartierpublic class Main {
18da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier  public static void main(String[] args) {
19da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier    Class klass = Other.class;
20da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier    Object[] data = new Object[100000];
21da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier    try {
22da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier        System.out.println("Filling heap");
23da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier        int size = 256 * 1024 * 1024;
24da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier        int index = 0;
25da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier        while (true) {
26da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier            try {
27da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier                data[index] = new byte[size];
28da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier                index++;
29da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier            } catch (OutOfMemoryError e) {
30da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier                size /= 2;
31da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier                if (size == 0) {
32da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier                    break;
33da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier                }
34da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier            }
35da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier        }
36da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier        // Initialize now that the heap is full.
37da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier        Other.print();
38da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier    } catch (OutOfMemoryError e) {
39da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier    } catch (Exception e) {
40f6c66c3348a2b64e4b6472827e31f711142006e3Kevin Brodsky        System.out.println(e);
41da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier    }
42da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier  }
43da595bec0f9af0b087822e4febc282fe8ec28192Mathieu Chartier}
44