При попытке установить e17 произошла ошибка пакетов

  1. В больших приложениях обычно строковые литералы занимают большие биты памяти. Таким образом, чтобы эффективно обрабатывать память, JVM выделяет область, называемую «Пул константных строк». ( Обратите внимание, что в памяти даже строка, на которую нет ссылок, несет вокруг char [], int для своей длины и другую для своего хэш-кода. Для числа, напротив, требуется максимум восемь непосредственных байтов )
  2. Когда complier встречается с литералом String, он проверяет пул, чтобы увидеть, существует ли уже идентичный литерал. И если он найден, ссылка на новый литерал направляется на существующую строку, и новый объект-литерал String не создается (существующая строка просто получает дополнительную ссылку).
  3. Следовательно: Изменяемость строк сохраняет память ...
  4. Но когда любая из переменных меняет значение, на самом деле - меняется только их ссылка, а не значение в памяти (следовательно, оно не повлияет на другие переменные, ссылающиеся на него), как показано ниже ....

  5. String s1 = "Старая строка";

    //s1 variable, refers to string in memory
            reference                 |     MEMORY       |
            variables                 |                  |
    
               [s1]   --------------->|   "Old String"   |
    

    Строка s2 = s1;

    //s2 refers to same string as s1
                                      |                  |
               [s1]   --------------->|   "Old String"   |
               [s2]   ------------------------^
    

    s1 = "Новая строка";

    //s1 deletes reference to old string and points to the newly created one
               [s1]   -----|--------->|   "New String"   |
                           |          |                  |
                           |~~~~~~~~~X|   "Old String"   |
               [s2]   ------------------------^
    

    Исходная строка «в памяти» не изменилась, но переменная-ссылка была изменена таким образом, чтобы она ссылалась на новую строку. И если бы у нас не было s2, «Старая строка» все равно была бы в памяти, но у нас не было бы доступа к ней ...

0
задан 06.05.2020, 06:38

1 ответ

Я решил эту проблему, пытаясь установить зависимости. Я должен был повторить это несколько раз, пока не столкнулся с пакетом с именем libembryo0; e17 пытался установить "libembryo-bin". Я apt-get удален libembryo0 и снова попытался установить e17, и это сработало. Очень небрежно, но успешно. Спасибо.

1
ответ дан 06.05.2020, 06:38

Теги

Похожие вопросы