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

"секретные" ЕС-ки заменили на нормальные серверы только в начале нулевых

Это они зря. Теперь вся безопасность страны ни к черту. О чем уже говорится совершенно открыто и что увязывают с политическими событиями последних пяти лет.

Отклоняясь от темы замечу, что Буран летал в полностью автоматическом режиме, а Шатл - нет.

Я большие ЭВМ видел видел (в институте и на одном ВПК предприятии), но за ними не работал и даже не помню их марок.

То есть написать собственные парсеры, маршаллинг-демаршаллинг, конверторы форматов дат/времени, добавить обработчики исключительных ситуаций... Это и есть изобретение велосипеда собственного протокола, о котором я сказал

Свое может и получше будет.. И побыстрее и понадежнее. И без ненужной шелухи. xml-файлы заставляют хвататься за голову сами по себе. В них полезной информации может половина от силы, остальное - повторяющиеся теги. Никак не могу понять, нахрена им понадобилось дублировать название тега при его закрытии, каким надо обладать для этого извращенным умом.
Многобайтовые кодировки опять же - совершенно излишняя для русского языка вещь. Ах, для иероглифов это нужно, загребли русский язык вместе с ними. Просто увеличение в 2 раза объема передаваемой информации для русского текста без каких либо выгод. В ДВА РАЗА! Сложим это с xml-файлом и получаем уже примерно 75% мусора в сообщении. Это же очень-очень много! Поправьте если я тут в чем то ошибся.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705280
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewЗашедший,
"секретные" ЕС-ки заменили на нормальные серверы только в начале нулевых
Это они зря. Теперь вся безопасность страны ни к черту. О чем уже говорится совершенно открыто и что увязывают с политическими событиями последних пяти лет.Лолшто? Стыренные пиратские версии софта IBM, доработанные кувалдой и такой-то матерью, "безопаснее" полностью открытых исходников Линуха? Торвальдс - выкормыш ЦРУ и агент Моссада?
ЕС-ки (особенно бакинской сборки), которые постоянно ремонтировались и требовали дежурной бригады с паяльниками, "надежнее" какого-нибудь камня от AMD?

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

я не готов к обсуждению отечественных ЭВМ, ЕС, Эльбрусе, Пентковском и т. п. В силу собственной некомпетентности в данном вопросе. Так же я не знаю, какое ПО и какая аппаратная часть используется в данный момент, скажем, в системе обнаружения запуска ядерных ракет.
А также я не готов устраивать обсуждать ни того, все ли открыто в Линуксе или нет, ни конфликт Столлмана с Торвальдсом.

Стыренные пиратские версии софта IBM
На это вообще наплевать. Гугл тырит все подряд и у всех и не признает никаких законов других стран. И ничего.

Но я хочу сказать, что для обеспечения обороноспособности страны вся аппаратная и программная часть должна изготавливаться в этой стране и этот выпуск должен быть полностью контролируемым этой страной и никем иным. И не иметь связей с внешним миром. И что не следовало в оборонной сфере отказываться от пусть и устаревших, но собственных систем, если они корректно выполняли свою работу.

Мало того, что как говорят, почти в каждую материнскую плату внедрен механизм бекдора. В сфере ОС вообще идет нацеливание на автоматическое обновление всего без спроса и полную утрату пользователем контроля над своим собственным компьютером.

То же самое в отношении средств создания ПО. Взять хотя бы мерзкий gradle и его активное навязывание всем.

Предлагаю дальше на эту тему не распространяться, т.к. это оффтоп.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705310
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewЕсли хочется сборщика мусора без пауз (а точнее с небольшими паузами) - есть ZGC, Shenandoah и C4 (от Zulu)


Спасибо за конкретную информацию.
До того как вы окунётесь с головой в Шенанды и прочие Си-4 послушате краткий поинт.

Выбор GC - это перетягивание каната между
- время реакции системы (lag)
- пропускная способность (throughput)

Первый вариант - катит для UI приложений. Второй для джобов и фоновых процессов.
Вы исходя из условий вашей задачи выбираете что вы ходите. Одно или другое.

Нет особой надежды что в ближайшее время создадут что-то революционное или сверх-быстрое
в части управления памятью.

Почитайте также рекомендации от производителя по поводу выбора GC в десятке.
Для большинства бизнесовых задач этого хватает.

https://docs.oracle.com/javase/10/gctuning/available-collectors.htm#JSGCT-GUID-414C9D95-297E-4EE3-B0D9-36F158A83393
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705311
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewТо есть для вполне таки рабочих программ. Прорыв 21 века! Программа работает пока не исчерпает всю память, потом просто падает! Разработчики довольны собой, считают что все ок! Ну а что - сожрут и так.
Есть ПО которое работает в особом режиме. Утром стартует и вечером вырубается. Биржевые
процессы например. Это удобно для наката новых версий. И если соптимизировать аллокации
памяти так что они будут работать с пулами объектов то чистых аллокаций будет очень мало.
С -Xmx32G со старта можно будет долго ждать пока все не заполнится.

ЕМНИП создатели программного продукта Disruptor который успешно работает в Лондонской бирже
так и поступили. Собственно они изобрели Эпсилон чуть раньше.

С другой стороны. Если вспомнить что в ОС освобождает память при убийствое main-процесса
с гарантией то идея становится не такой уж абсурдной. Вспомните как часто вы убивали процессы
в таск менеджере Windows или посылали сигнал KILL процессу Unix? Разве вас беспокоило
состояние памяти после этого? Пох. Мы убеждены что самый лучший GC это операционка.

С третьей стороны. Все умные и сверх-умные параллельные и последовательные GC постоянно
делять памят на зоны по классу доступа. И на этом мы теряем полезное пространство. А эпсилону пох.
Вся память - flat. Вся доступна. Уплотнять не надо. Убирать не надо. Уберет ОС.

Особенно если речь идет о коротких и одноразовых процессах таких как компилляция или деплой.

Why not?

Вот как-то так.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705318
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New1) Вся т. н. современная кибернетика основана на идеях 20-50 летней давности

Как мы дошли до идей кибернетики. Вернемся чуть в начало.

Собственно тема началась как обсуждение GC, строк и подсчета ссылок.
Код: java
1.
2.
3.
4.
String s = "";
for (int i = 0; i < 100; i++) {
    s = s + Integer.toString(i);
}



Обсуждение данной темы я считаю неполным без код-ревью и комментариев этого
исходника со стороны сообщества Java в котором мы находимся. Code-smell вообще
написать можно в любом ЯП. Но я-бы не стал это возводить в систему. Это - редкое
исключение из правил и обычно code-review на нормальном проекте не пропускает
подобные "странности".

Мне также интересно - кто автор. У него профиль не прокачан. Там есть Delphi, Android. Но в небольших количествах.
Хочется понять откуда автор пришёл с такими вопросами. Бытие определяет сознание. Это сказал классик.
А у нас в форуме - язык и технология.

Мне также всегда было интересно почему GC обуждают в контексте Java? Есть масса предметных
областей It, где GC используется явно или неявно.

Существуют предметные области где без GC вообще ничего не работает.
GC (ЕМНИП) был создан и применен для языка Lisp. В силу своей специфики
(приложение + данные суть AST ) ручное управление освобождением
памяти для Lisp-машины практически немыслимо.

Я за свою практику использования Java видел много прод-инцедентов. C OutOfMemory, PermGen e.t.c.
И во всех случаях мы разбирались и приходили к выводу что виноват разработчик. Где-то не так c Hibernate
работали. Где-то экстенсивный рост системы вследствие распухания БД. Но никогда GC не был указан
причиной инцедента. Да и сложно себе представить подобное объяснение.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705338
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Спасибо за полезную информацию.

Утром стартует и вечером вырубается
Это все хорошо, но где гарантия, что оно не отрубится раньше? Вносится элемент непредсказуемости, повезет-не повезет. Или есть четкие критерии оценки времени работы такой программы и условий, которым она должна удовлетворять, которые могут гарантировать n часов работы программы?

Мы убеждены что самый лучший GC это операционка.

Вы уверены, что с аварийным завершением работы у операционки все в порядке на 100% и это не создает утечек ресурсов?
Программа может не только оперативную память использовать, но и другие ресурсы расходовать, которые автоматически не освободятся. Например, создавать временные файлы на диске. Менять существующие файлы и привести их в негодное состояние при внезапном завершении. Запустить транзакцию в БД, которая пусть даже не зависнет, но отвалится по rollback и приведет к росту мусора в базе (и так на регулярной основе, каждый день). Это так, на вскидку.

приходили к выводу что виноват разработчик. Где-то не так c Hibernate работали. Где-то экстенсивный рост системы вследствие распухания БД.

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

Мне также интересно - кто автор.
Предлагаю обсуждать суть вопроса, а не мою скромную персону.

почему GC обуждают в контексте Java?

Ну вроде как 100 временных строк не удаляются сразу из-за алгоритма сборщика мусора, который обеспечивает быстрое выделение, но может откладывать освобождение памяти сравнительно надолго. Это мне так сказали. Отсюда обсуждение плавно перешло на систему управления памятью.

я считаю неполным без код-ревью и комментариев этого
исходника со стороны сообщества Java в котором мы находимся

Это просто пример проблемного кода, выбранный нарочно, не более. Все таки операцию + я бы для строк отменил в Java, раз уж она такая дурно пахнущая, а выгоды от нее не видно никакой. Просматривать тогда меньше пришлось бы - ведь компилятор по идее должен брать на себя часть работы по отсеиванию плохого кода. Заодно и Integer.toString на отмену просится или есть мнения, что оно может быть не дурно пахнущим?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705341
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene New,
у тебя куча претензий к java, но всё упирается в незнание тонкостей языка. начни работать, а не обсуждать и будет польза.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705395
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я собрал на Jdk8 следующий исходник.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ProbeString {

    public void f() {
        String s = "";
        for (int i = 0; i < 100; i++) {
            s = s + Integer.toString(i);
        }
    }

}



Вот что внутри байткода.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Compiled from "ProbeString.java"
public class ProbeString {
  public ProbeString();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public void f();
    Code:
       0: ldc           #2                  // String
       2: astore_1
       3: iconst_0
       4: istore_2
       5: iload_2
       6: bipush        100
       8: if_icmpge     39
      11: new           #3                  // class java/lang/StringBuilder
      14: dup
      15: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V
      18: aload_1
      19: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      22: iload_2
      23: invokestatic  #6                  // Method java/lang/Integer.toString:(I)Ljava/lang/String;
      26: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      29: invokevirtual #7                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      32: astore_1
      33: iinc          2, 1
      36: goto          5
      39: return
}



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

Код: java
1.
// Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

это комменты декомпилятор пишет?
если да - то какие проблемы :)

тогда следующий тест - загрузить из текстового файла по строчно.
помнится у меня грузилось очень долго , но это было в 6 java.... если не в 5...
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705416
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Утилита javap генерит все.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705419
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУтилита javap генерит все.значит компилятор очень умный
и не понятно откуда
Eugene New
Код: java
1.
2.
3.
4.
String s = "";
for (int i = 0; i < 100; i++) {
    s = s + Integer.toString(i);
}




пожирает память, создавая 100 объектов, причем почему то одновременно.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705420
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
тогда следующий тест - загрузить из текстового файла по строчно.
помнится у меня грузилось очень долго , но это было в 6 java.... если не в 5...
Я думаю что со времен java5 слишком много всего поменялось.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705421
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

может из-за этого
Код: java
1.
11: new           #3                  // class java/lang/StringBuilder
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705422
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если да - то какие проблемы

Проблемы все же есть.

1. new StringBuilder внутри цикла
2. Integer.toString это new String внутри цикла
3. StringBuilder.toString это new String внутри цикла
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705426
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ думаю что со времен java5 слишком много всего поменялось.еще как много...
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705427
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть внутри цикла здесь создается 200 объектов String, 100 объектов StringBuilder.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705429
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо дальше копать.

Я катаюсь на восьмой модели. У кого девятка? Десятка? Пробуйте.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705450
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ собрал на Jdk8 следующий исходник.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class ProbeString {

    public void f() {
        String s = "";
        for (int i = 0; i < 100; i++) {
            s = s + Integer.toString(i);
        }
    }

}



Вот что внутри байткода.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Compiled from "ProbeString.java"
public class ProbeString {
  public ProbeString();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public void f();
    Code:
       0: ldc           #2                  // String
       2: astore_1
       3: iconst_0
       4: istore_2
       5: iload_2
       6: bipush        100
       8: if_icmpge     39
      11: new           #3                  // class java/lang/StringBuilder
      14: dup
      15: invokespecial #4                  // Method java/lang/StringBuilder."<init>":()V
      18: aload_1
      19: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      22: iload_2
      23: invokestatic  #6                  // Method java/lang/Integer.toString:(I)Ljava/lang/String;
      26: invokevirtual #5                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      29: invokevirtual #7                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      32: astore_1
      33: iinc          2, 1
      36: goto          5
      39: return
}



Прошу комментарии сообщества.
21678798
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705462
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,
читай 21680335 в бесконечном цикле до наступления просветления.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705542
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewSiemargl,
читай 21680335 в бесконечном цикле до наступления просветления.

А что там читать, код написан криво уже не раз сказали в ветке об этом.
Хочешь пиши криво, хочешь правильно. Криво или правильно зависит от ситуации.
Хочешь в цикле создавать новые объекты создавай и не жалуйся что они создаются, не хочешь создавать не создавай и не жалуйся что они не создаются.

по сути Integer.toString(12) явно говорит, сделай объект string представлящий число.
stringBuilder.append(12) строку не сделает а просто пишет chars в свой буфер

И тот и этот метод воспользуются тем же самым Integer.getChars, только Integer.toString создает новый char array и в конце сделает new String(chars[]) а stringbuilder прежложит дописать в свой заранее выделенный char array.

Java дает тебе две пилюли одну синюю другую красную, выбирай. И не жалуйся зачем потом выбрал синюю.
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705564
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene NewТо есть внутри цикла здесь создается 200 объектов String, 100 объектов StringBuilder.
И что?
Русским язЫком сказать что хочешь?

Хочешь обсуждать содержательно, замени в своем коде String на int и этот код обсуждай.
В нем ни одного объекта создано не будет.

Код: java
1.
2.
3.
4.
5.
6.
//String s = "";
int s = 0;
for (int i = 0; i < 100; i++) {
    //s = s + Integer.toString(i);
   s = s + 5;
}



на каком языке так программировать рекомендовано, для какой машины?
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705601
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonобычно code-review на нормальном проекте не пропускает
подобные "странности".
[рекламная пауза] некоторые IDE уже на этапе разработки про подобные странности рапортуют
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705636
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
)))))
Круто! LOL ))
...
Рейтинг: 0 / 0
Что не так с Java String и как вы с этим боретесь?
    #39705827
Eugene New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
некоторые IDE уже на этапе разработки про подобные странности рапортуют

Им бы еще самим научится эти IDE грамотно писать.

lleming,
А что там читать, код написан криво уже не раз сказали в ветке об этом.
По жизни недогоняющему Siemargl читать надо, причем до полного просветления - он решил, что компилятор все исправил и так можно писать.

Чтобы говорить на любой пример плохого поведения программы, что код плохой и программист дурак, даже не нужно обладать разумом. Это может и попугай.

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


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