Source code:
public class Act {
 public static void doMathForever() {
  int i = 0;
  for (;;) {
   i += 1;
   i *= 2;
  }
 }
}

Deassembled code:
E:\Workspaces\Eclipse\Private\JVMExample\bin>javap -c Act
Compiled from "Act.java"
public class Act extends java.lang.Object{
public Act();
  Code:
   0:   aload_0
   1:   invokespecial   #8; //Method java/lang/Object."<init>":()V
   4:   return

public static void doMathForever();
  Code:
   0:   iconst_0
   1:   istore_0
   2:   iinc    0, 1
   5:   iload_0
   6:   iconst_2
   7:   imul
   8:   istore_0
   9:   goto    2

}

Posted by 알 수 없는 사용자
,

-verbosegc를 사용하면 GC 관련 정보를 표준 출력으로 확인할 수 있다.
Posted by 알 수 없는 사용자
,

프로그램 실행 중에 다음과 같은 에러가 발생하였다.

java.lang.OutOfMemoryError: unable to create new native thread

메모리가 부족하다고 판단하여 자바의 힙 크기를 증가시켰더니 상황은 더 악화되었다.

문제는 JVM에 할당된 메모리 크기의 문제가 아니라,

자바 쓰레드 생성 시 매핑되는 윈도우 시스템 쓰레드의 생성에 따른

시스템 메모리 부족으로 인해 발생했다.

자바의 힙 크기 증가가 상황을 악화시킨 이유는

당연히 JVM에 할당한 메모리만큼 시스템 메모리가 줄어들었기 때문이다.

다음 문서들을 참고하기 바란다.

Reference:
http://jroller.com/rreyelts/date/20040909
http://www.egilh.com/blog/archive/2006/06/09/2811.aspx

Posted by 알 수 없는 사용자
,