2013-04-23 2 views
0

Java에서 2D 이중 배열을 초기화하려고 시도합니다.이 이중 배열에는 1000 개의 행과 50 개의 열이 있습니다.Java의 대형 2D 이중 배열

내가이 오류를 가지고 있다고했을 때 :

Too many constants, the constant pool for ClassName would exceed to 65536 entries. 

다음은 내 작품의 일부입니다

double[][] haltonArray = {{0.116538, -1.08275, -0.832512, 1.9746, 1.68741, 2.23391, 
      0.703111, -0.400975, -1.8214, -2.22141, 0.127014, -1.31939, 
      0.874426, 0.0916673, 0.236509, 0.731912, 1.43766, 0.88484, 
      1.13653, -0.882871, -0.212072, -0.431315, -1.21639, -0.0352919, 
      0.334481, 0.891777, -0.178983, 0.531624, -0.360295, 0.551329, 
      0.696159, -0.595714, 0.27043, -0.262656, -0.176079, -0.667502, 
      0.66105, -0.593195, 2.10675, 
      0.168339, -0.918746, -1.59296, -0.0584028, -0.336773, -1.0043, 
     -1.59346, -0.041084, 1.93094, 0.896973,0.637633}, 
     {-0.534821, -0.0682488, -0.246726, -1.08433, -1.61264, 
     -1.47508, 0.907127, -0.261507, -1.42036, -1.66814, 0.209045,  -1.17226, 
      0.967877, 0.150398, 0.291741, 0.795219, 1.56906, 0.947359, 
      1.21103, -0.831883, -0.177076, -0.396745, -1.15539, -0.00712026, 
      0.361938, 0.929345, -0.154306, 0.558805, -0.335862, 0.577341, 
      0.721534, -0.573016, 0.289458, -0.244034, -0.159018, -0.6469, 
      0.681047, -0.574957, 2.27073, 
      0.183053, -0.897595, -1.54553, -0.0452613, -0.323059, -0.983445, 
     -1.55014, -0.0291968, 2.00915, 0.913608, 0.651105}, {0.828784, ... }}; 

어떤 제안하십시오?

+0

이 내용은 http://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error와 중복되는 것으로 생각합니다. –

+0

응용 프로그램이 시작될 때 해당 상수를 파일에 저장하고 해당 파일을 읽을 수 있습니다. –

+0

클래스에이 코드가 있습니까? – Freak

답변

0

상수 풀은 최대 65536 개의 항목을 허용하며 따라서 한도를 초과 할 수 없습니다.

상수 풀 테이블은 대부분의 상수 값이 저장되는 곳입니다. 여기에는 모든 정렬 수, 문자열, 식별자 이름, 클래스 및 메소드에 대한 참조 및 유형 설명자와 같은 값이 포함됩니다. 상수 풀 테이블의 특정 상수에 대한 모든 인덱스 또는 참조는 16 비트 (유형 u2) 숫자로 지정됩니다. 여기서 인덱스 값 1은 테이블의 첫 번째 상수를 나타냅니다 (인덱스 값 0은 유효하지 않습니다).

파일 형식 개발 중에 이루어진 역사적인 선택 때문에 상수 풀 테이블의 상수는 실제로 상수 테이블과 같지 않습니다. 첫째, 테이블은 0이 아닌 1에서 시작하여 인덱싱되므로 카운트는 실제로 최대 인덱스로 해석되어야합니다. 또한 두 가지 유형의 상수 (longs 및 double)는 테이블에서 두 개의 연속 슬롯을 차지하지만 두 번째 슬롯은 결코 직접 사용되지 않는 유령 인덱스입니다.

상수 풀의 각 항목 (상수) 유형은 초기 바이트 태그로 식별됩니다. 이 태그 다음에 나오는 바이트 수와 해석은 태그 값에 따라 다릅니다.

자세한 내용은 here을 참조하십시오.