Профилирование Java char [] и строк - PullRequest
7 голосов
/ 25 октября 2011

Я профилирую приложение и заметил, что 52% (195 МБ) памяти используется char[] и 20% String.Это большой проект с большим количеством зависимостей, и я только что видел его, поэтому у меня есть пара связанных вопросов, которые помогут мне начать:

Создает ли String s = "some text" char []?

Я заметил, что есть сотни String s = new String("some text") без видимой причины.Это виновник?

1 Ответ

10 голосов
/ 25 октября 2011

Создает ли String s = "некоторый текст" символ []?

Это не создает никаких объектов.

Я заметил, что есть сотни String s = new String ("некоторый текст") без видимой причины. Это виновник?

Это создает копию String и, возможно, char [] (два объекта). Копия выполняется только в том случае, если строка представляет подстроку другой строки.

Я хотел бы убедиться, что у вас есть версия Java, которая поддерживает -XX:+UseCompressedStrings. Она включена по умолчанию в более поздних версиях Java и позволяет JVM использовать byte[] вместо char[], что может быть вдвое меньше.

Однако 400 МБ не так уж велики в наши дни, и покупка большего объема памяти может быть самым простым решением. Вы можете получить 16 ГБ всего за 120 долларов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...