15464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier/* 25464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * Copyright (C) 2016 The Android Open Source Project 35464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * 45464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * Licensed under the Apache License, Version 2.0 (the "License"); 55464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * you may not use this file except in compliance with the License. 65464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * You may obtain a copy of the License at 75464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * 85464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * http://www.apache.org/licenses/LICENSE-2.0 95464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * 105464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * Unless required by applicable law or agreed to in writing, software 115464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * distributed under the License is distributed on an "AS IS" BASIS, 125464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * See the License for the specific language governing permissions and 145464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier * limitations under the License. 155464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier */ 165464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier 175464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartierpublic class Main { 185464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier public static void main(String[] args) { 195464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier Class klass = Other.class; 205464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier Object[] data = new Object[100000]; 215464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier try { 225464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier System.out.println("Filling heap"); 235464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier int size = 256 * 1024 * 1024; 245464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier int index = 0; 255464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier while (true) { 265464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier try { 275464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier data[index] = new byte[size]; 285464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier index++; 295464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } catch (OutOfMemoryError e) { 305464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier size /= 2; 315464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier if (size == 0) { 325464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier break; 335464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } 345464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } 355464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } 365464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier // Initialize now that the heap is full. 375464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier Other.print(); 385464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } catch (OutOfMemoryError e) { 395464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } catch (Exception e) { 405464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier System.err.println(e); 415464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } 425464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier } 435464c73567ccccd0cda6449d2a2775814d5fe88dMathieu Chartier} 44