2013-04-23 4 views
0

Я пытаюсь инициализировать 2D двойной массив в java, этот двойной массив имеет 1000 строк и 50 столбцов.Большой 2D двойной массив в Java

, когда я сделал, что я получил эту ошибку:

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 является недопустимым).

Из-за исторического выбора, сделанного во время разработки формата файла, количество констант в таблице с постоянным пулом фактически не совпадает с количеством постоянных пулов, которое предшествует таблице. Во-первых, таблица индексируется начиная с 1 (а не 0), поэтому счет действительно должен интерпретироваться как максимальный индекс. Кроме того, два типа констант (длинные и удвоенные) занимают два последовательных слота в таблице, хотя второй такой слот является фантомным индексом, который никогда не используется напрямую.

Тип каждого элемента (константы) в постоянном пуле идентифицируется начальным байтовым тегом. Количество байтов, следующих за этим тегом, и их интерпретация зависят от значения тега.

Для получения более подробной информации посетите here.

Смежные вопросы