Я реализую алгоритм, основанный на вероятностном скрытом семантическом индексировании (plsa), а статья здесь, и ему нужен четырехмерный массив с именем p_z_d_wt_wv, z – тема, d – документ, wt – текстовое слово, wv – визуальное слово, а число каждого измерения составляет около 12 7000 100. , 500, а массив представляет собой двойной массив, поэтому ему требуется 32 ГБ памяти!! Я выделяю эту память, как показано ниже, и это просто для демонстрации, так как количество wt и wv в каждом документе разное.
p_z_d_wt_wv = new double[12][7000][][];
for( int t = 0; t < 12; ++t)
{
for( int d = 0; d < 7000; ++d )
{
p_z_d_wt_wv[t][d] = new double[100][500];
}
}
когда я запускаю код, у него проблема с нехваткой памяти. Во-первых, почему моему коду не хватает памяти? Выделяется ли память последовательно, если массив выделяется по-моему? Это потому, что у java есть ограничение памяти для последовательной памяти? Если да, то каков предел?
Во-вторых, что я могу сделать, чтобы решить эту проблему, предполагая, что память сервера достаточно велика. Я знаю, что могу изменить его как массив float, но есть ли другие решения?
float
, если вам абсолютно не нужна небольшая дополнительная точность. 11.07.2013