俺Puzzlers

先週末天領倉敷Scalaの勉強会を開催したわけですが、
同日にダブルヘッダーで社内勉強会も開催してました。

皆でJava Puzzlersを解いてみようってやつだったんですが、ついでなのでオリジナル問題も出してみました。

public class Clazz {
	public static void main(String[] args) {
		func(0);
	}
	public static int func(final int i) {
		return func(i);
	}
}


実行結果がOutOfMemoryErrorになるように6行目の"i"の部分(カッコ内)を変更せよ。

ルール
  1. リテラル(定数)の使用禁止
  2. インポートおよびフルパスでのクラス指定禁止
  3. iを2回以上使用してはならない
  4. ヒープ領域およびスタック領域はデフォルトとする
  5. コードの長さは良識の範囲で
  6. 外部リソースへのアクセス禁止
  7. 妙なライブラリにクラスパス通すの禁止

事情がよく解ってる人には多分結構緩い問題のような気もするんですが、それなりに皆苦戦した模様*1


因みに解き方は2種類考えた*2んですが、予想Guyな解き方が出来る方は教えていただければ超喜びます。

*1:正解者1/4名

*2:1回で超巨大なインスタンスを生成する方法と無限ループを作ってインスタンスを肥大化させる方法