powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Что не так с Java String и как вы с этим боретесь?
25 сообщений из 293, страница 11 из 12
Что не так с Java String и как вы с этим боретесь?
    #39707021
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

выделять на стеке только object String, без буффера - те же яйца, но в профель. Все равно будет heap гадится.
Нет, только буфер. TmpStringBuilder

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

В верхней функции создаем TmpStringBuilder и передаем во все вызываемые процедуры как параметр.

азмем буффера под строку заранее не известен (и даже, может меняться).
Если его зафиксировать константой, то должно получится.

Доступ к i-му элементу тоже возможен но это будет как-раз отступление от потоков и движение в
сторону других строк.

Уж лучше я на буфере фиксированного размера буду работать.

Нужно как-то уметь понимать и обрабатывать объекты покидающие/могут покинуть (аналог escape-анализа) Thread.

Этого мало. Нужно убивать TmpStringBuilder при завершении функции, в которой он объявлен, не потока, а функции.

Если сделать выделение под TmpStringBuilder в куче, общей для всех потоков, но отдельной от обычной куче? В этой строковой куче не будет сборщика мусора, память будет освобождаться сразу по выходе из процедуры со всеми прелестями фрагментации и т. п. Не получится из за необходимости синхронизации потоков для выделения памяти?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707023
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton....survival областей....этих перебежчиков.
Предположим, есть одна штука application сервера, где крутятся два разных процесса/сервлета

1. "быстрый" запрос-ответ (0.001 секунда), но к которому идет частое обращение, т.е. много мусора
2. "второй" медленный (10 секунд), выделяющий буффер большого объема. пусть обработка фотографий

из-за процесса N 1, minor коллектор срабатывает раз в 0.2 секуды... все хорошо... но буффер от второго процесса, никогда в eden не задержится, т.к. за 10 / 0.2 = 50 циклов сборки мусора, он явно из servival в old gen переместится.

В общем, современная JVM совершенно не многозадачная. Ее можно настроить только на выполнения одной задачи. А для разных thread/задач, нужны разные настройки памяти.

Статистика по survival для настройки и так вполне достаточная. Но если на сервере есть разные классы задач (по времени жизни, по требованию eden vs old / temporary object vs cache/ ), то нормально работать они могут только после разнесения по разные JVM / application server'ам. Современные концепция application server'ов: кучу application задеплоим в одну JVM - для меня очень сомнительна

IMHO

p.s. Потребность использования non-heap меморя для кэшей - из-за этого же. Просто нельзя нормально JVM настроить, пока heap общий.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707028
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New...В этой строковой куче не будет сборщика мусора, память будет освобождаться сразу по выходе из процедуры...

Ну напишите свою реализацию String'а на non-heap memory + подсчет ссылок

Только... практического смысла в этом нет... никакого.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707031
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonвадя, это камент к какому из моих сообщений?в среднем по всем,
как я вижу разговор из практической фазы переходит в область околонаучных исследования,теоретически может быть и интересно , но практически - ..., как и исследования британских учёных.
твои бы знания направить в изучение оптимизации стринбилдера - это было бы и более познавательнее и более практичнее.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707032
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonТебе по идее вообще не нужна строка. У тебя сервлет. И у него где то есть OutputStream. Вот туда и надо нацелить html bulder.вот тут и проявляется. у меня ws. и тут только строка или бинари.
и строка, как ни крути, останется строкой.
Ты хочешь сказать что в этот ws ты вставляешь html?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707038
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Ну напишите свою реализацию String'а на non-heap memory + подсчет ссылок

Ничего считать не надо, всегда удаляем по выходу из процедуры.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707043
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonТы хочешь сказать что в этот ws ты вставляешь html?с передаю сформированную строку (которая представляет из себя html код /в примере таблица/) по ws, на клиенте просто вставляю эту строку как
элемент.innerHTML='полученная_по_ws_строка'
и у меня отображается таблица.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707044
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonвадя, это камент к какому из моих сообщений?в среднем по всем,
как я вижу разговор из практической фазы переходит в область околонаучных исследования,теоретически может быть и интересно , но практически - ..., как и исследования британских учёных.
твои бы знания направить в изучение оптимизации стринбилдера - это было бы и более познавательнее и более практичнее.
Стринг билдер - прекрасно работает.

Нечего там оптимизировать. Топик вообще про компиллятор. Надо просто некоторым топик
стартерам сначала почитать рекомендации по оптимизации. Самые базовые. Они есть в
любом языке. В сях есть свои. В Паскале свои.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707047
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewУж лучше я на буфере фиксированного размера буду работать.

А в твой буфер можно будет положить utf-8 ?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707050
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonТы хочешь сказать что в этот ws ты вставляешь html?с передаю сформированную строку (которая представляет из себя html код /в примере таблица/) по ws, на клиенте просто вставляю эту строку как
элемент.innerHTML='полученная_по_ws_строка'
и у меня отображается таблица.
Это треш.

Ты согласен?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707054
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто треш.

Ты согласен?это серверный рендеринг.
объясни в чем трэш?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707056
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonЭто треш.

Ты согласен?это серверный рендеринг.
объясни в чем трэш?
WS - это веб-сервис?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707060
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonWS - это веб-сервис?websocket
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707061
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСтринг билдер - прекрасно работает.

Нечего там оптимизировать.

+100500

Если StringBuilder не нравится, то можно ByteArrayOutputStream взять. У него даже несколько реализаций есть (например от google - поблочне выделение, что бы копирования не было)

maytonНечего там оптимизировать.

Обычно "подводный" камень по перформанцу это отдача клиенту по сети. Там приходится и encode в кодовую таблицу клиента делать и gzip'овать

Gzip в Java (да и вообще), крайне тормознутая вещь. У нас >50 % CPU на продуктиве уходило чисто на gzip перед отдачей клиенту. Всякие JSON / ProtoBuf / String / StringBuilder'ы на этом фоне были копейки )))
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707068
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevGzip в Java (да и вообще), крайне тормознутая вещь.вообще то зипует апач- нативным кодом. java тут не приделах
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707071
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяmaytonWS - это веб-сервис?websocket
А тьфу. Ну сорян. Извини я не UI-щик и этих ваших юайных штук не понял.
Ладно беру слова взад. Не трешак. Нормик.

Но насчет Html-builder ты все таки подумай. Код всегда удобнее рефакторить
если это вызовы методов а не простыня конкатенаций.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707173
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

А в твой буфер можно будет положить utf-8 ?

Суть предложения дать возможность выделять на входе процедуры буфер в стеке с его автоматическим освобождением при выходе из нее. Класть туда можно что угодно, для UTF-8 можно отдельный класс сделать.
Хотя я бы этот utf-8 использовать бы не стал.

Все равно на выходе из самой верхней функции вернет String tmpBuf.ToString (), выделяя под этот String место в обычной куче. По производительности - не хуже чем сейчас. Зато не будет на каждую операцию со строкой мусорить в куче умершими StringBuilder-ми.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707174
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, в UI приложениях этот ваш сборщик мусора бесит больше долгих операций по нажатию кнопки. Пользователь может понять, почему ему приходится ждать, когда он что-то приказал сделать, нажав на кнопку. Но когда он не делает ничего, а программа начинает вдруг шуршать диском и зависать - это реально бесит.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707175
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewХотя я бы этот utf-8 использовать бы не стал..
Почему?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707177
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот сижу я в Firefox, никого не трогаю, смотрю сайт, просто текст читаю. И вдруг эта сволочь начинает виснуть сама по себе и шуршать диском. Не знаю, что оно там вообще делает, мусор собирает или еще что, но раздражает изрядно.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707179
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
мы же заботимся об упрощении работы программиста. С UTF-8 работать сложнее, потому что он не является массивом символов с произвольным доступом и дольше по той же причине.

Раз уж буфер все равно уничтожится при выходе из функции, уж лучше я буду формировать строки без лишнего геморроя.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707183
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewВот сижу я в Firefox, никого не трогаю, смотрю сайт, просто текст читаю. И вдруг эта сволочь начинает виснуть сама по себе и шуршать диском. Не знаю, что оно там вообще делает, мусор собирает или еще что, но раздражает изрядно.
Это просто прекрасно. Мне нравится как ты проводишь параллели между java и посторонними приложениями на сях.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707188
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

заведи свою ветку, или ничего не пиши, если, на голубом глазу,
считаешь что с твоим кодом всё в порядке.
Обсуждать "твою" тему в этом топике - за рамками добра и зла.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707194
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждать "твою" тему в этом топике - за рамками добра и зла.

Как раз его тема здесь по смыслу подходит. Т. к. вопрос заключается и в возможных проблемах со String. В отличие от ваших сообщений, в которых один оффтоп и ноль полезной информации.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39707195
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonEugene NewХотя я бы этот utf-8 использовать бы не стал..
Почему?

потому что там на символ или один или два байта, а программу нужно писать на одном языке (не языке программирования а вобще)
пишете для англичан
то
ansii
Код: java
1.
2.
3.
4.
5.
public class Application{
    pubic static void main(String[] args){
      System.out.println("hello world");
   }
}



клиент из россии то
cp1251
Код: java
1.
2.
3.
4.
5.
публичный класс Приложение{
   публичный статичный пусто главный_метод(Строчные[]  агрументы){
     Система.вывод.напечатать("привет мир");
   }
}



все остальное от лукавого.
Причем все строки на стеке и работает ну очень быстро.
...
Рейтинг: 0 / 0
25 сообщений из 293, страница 11 из 12
Форумы / Java [игнор отключен] [закрыт для гостей] / Что не так с Java String и как вы с этим боретесь?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]