|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Зашедший, "секретные" ЕС-ки заменили на нормальные серверы только в начале нулевых Это они зря. Теперь вся безопасность страны ни к черту. О чем уже говорится совершенно открыто и что увязывают с политическими событиями последних пяти лет. Отклоняясь от темы замечу, что Буран летал в полностью автоматическом режиме, а Шатл - нет. Я большие ЭВМ видел видел (в институте и на одном ВПК предприятии), но за ними не работал и даже не помню их марок. То есть написать собственные парсеры, маршаллинг-демаршаллинг, конверторы форматов дат/времени, добавить обработчики исключительных ситуаций... Это и есть изобретение велосипеда собственного протокола, о котором я сказал Свое может и получше будет.. И побыстрее и понадежнее. И без ненужной шелухи. xml-файлы заставляют хвататься за голову сами по себе. В них полезной информации может половина от силы, остальное - повторяющиеся теги. Никак не могу понять, нахрена им понадобилось дублировать название тега при его закрытии, каким надо обладать для этого извращенным умом. Многобайтовые кодировки опять же - совершенно излишняя для русского языка вещь. Ах, для иероглифов это нужно, загребли русский язык вместе с ними. Просто увеличение в 2 раза объема передаваемой информации для русского текста без каких либо выгод. В ДВА РАЗА! Сложим это с xml-файлом и получаем уже примерно 75% мусора в сообщении. Это же очень-очень много! Поправьте если я тут в чем то ошибся. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 21:54 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewЗашедший, "секретные" ЕС-ки заменили на нормальные серверы только в начале нулевых Это они зря. Теперь вся безопасность страны ни к черту. О чем уже говорится совершенно открыто и что увязывают с политическими событиями последних пяти лет.Лолшто? Стыренные пиратские версии софта IBM, доработанные кувалдой и такой-то матерью, "безопаснее" полностью открытых исходников Линуха? Торвальдс - выкормыш ЦРУ и агент Моссада? ЕС-ки (особенно бакинской сборки), которые постоянно ремонтировались и требовали дежурной бригады с паяльниками, "надежнее" какого-нибудь камня от AMD? Это уж совсем толстый троллинг пошел. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 22:40 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Зашедший, я не готов к обсуждению отечественных ЭВМ, ЕС, Эльбрусе, Пентковском и т. п. В силу собственной некомпетентности в данном вопросе. Так же я не знаю, какое ПО и какая аппаратная часть используется в данный момент, скажем, в системе обнаружения запуска ядерных ракет. А также я не готов устраивать обсуждать ни того, все ли открыто в Линуксе или нет, ни конфликт Столлмана с Торвальдсом. Стыренные пиратские версии софта IBM На это вообще наплевать. Гугл тырит все подряд и у всех и не признает никаких законов других стран. И ничего. Но я хочу сказать, что для обеспечения обороноспособности страны вся аппаратная и программная часть должна изготавливаться в этой стране и этот выпуск должен быть полностью контролируемым этой страной и никем иным. И не иметь связей с внешним миром. И что не следовало в оборонной сфере отказываться от пусть и устаревших, но собственных систем, если они корректно выполняли свою работу. Мало того, что как говорят, почти в каждую материнскую плату внедрен механизм бекдора. В сфере ОС вообще идет нацеливание на автоматическое обновление всего без спроса и полную утрату пользователем контроля над своим собственным компьютером. То же самое в отношении средств создания ПО. Взять хотя бы мерзкий gradle и его активное навязывание всем. Предлагаю дальше на эту тему не распространяться, т.к. это оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2018, 23:20 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 00:30 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewТо есть для вполне таки рабочих программ. Прорыв 21 века! Программа работает пока не исчерпает всю память, потом просто падает! Разработчики довольны собой, считают что все ок! Ну а что - сожрут и так. Есть ПО которое работает в особом режиме. Утром стартует и вечером вырубается. Биржевые процессы например. Это удобно для наката новых версий. И если соптимизировать аллокации памяти так что они будут работать с пулами объектов то чистых аллокаций будет очень мало. С -Xmx32G со старта можно будет долго ждать пока все не заполнится. ЕМНИП создатели программного продукта Disruptor который успешно работает в Лондонской бирже так и поступили. Собственно они изобрели Эпсилон чуть раньше. С другой стороны. Если вспомнить что в ОС освобождает память при убийствое main-процесса с гарантией то идея становится не такой уж абсурдной. Вспомните как часто вы убивали процессы в таск менеджере Windows или посылали сигнал KILL процессу Unix? Разве вас беспокоило состояние памяти после этого? Пох. Мы убеждены что самый лучший GC это операционка. С третьей стороны. Все умные и сверх-умные параллельные и последовательные GC постоянно делять памят на зоны по классу доступа. И на этом мы теряем полезное пространство. А эпсилону пох. Вся память - flat. Вся доступна. Уплотнять не надо. Убирать не надо. Уберет ОС. Особенно если речь идет о коротких и одноразовых процессах таких как компилляция или деплой. Why not? Вот как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 00:43 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene New1) Вся т. н. современная кибернетика основана на идеях 20-50 летней давности Как мы дошли до идей кибернетики. Вернемся чуть в начало. Собственно тема началась как обсуждение GC, строк и подсчета ссылок. Код: java 1. 2. 3. 4.
Обсуждение данной темы я считаю неполным без код-ревью и комментариев этого исходника со стороны сообщества 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 не был указан причиной инцедента. Да и сложно себе представить подобное объяснение. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 01:11 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, Спасибо за полезную информацию. Утром стартует и вечером вырубается Это все хорошо, но где гарантия, что оно не отрубится раньше? Вносится элемент непредсказуемости, повезет-не повезет. Или есть четкие критерии оценки времени работы такой программы и условий, которым она должна удовлетворять, которые могут гарантировать n часов работы программы? Мы убеждены что самый лучший GC это операционка. Вы уверены, что с аварийным завершением работы у операционки все в порядке на 100% и это не создает утечек ресурсов? Программа может не только оперативную память использовать, но и другие ресурсы расходовать, которые автоматически не освободятся. Например, создавать временные файлы на диске. Менять существующие файлы и привести их в негодное состояние при внезапном завершении. Запустить транзакцию в БД, которая пусть даже не зависнет, но отвалится по rollback и приведет к росту мусора в базе (и так на регулярной основе, каждый день). Это так, на вскидку. приходили к выводу что виноват разработчик. Где-то не так c Hibernate работали. Где-то экстенсивный рост системы вследствие распухания БД. Кто виноват - тонкий философский вопрос, занимающий умы отечественной интеллигенции с середины 19 века. Существуют ли список того, что не должен делать разработчик, чтобы не оказаться виноватым и чтобы наоборот - если он этого не делал, то и обвинять его не будут? Условия использования. Было бы полезно с ними ознакомится. (понятное дело, что разработчик склонен будет наоборот считать виноватым не себя, а среду). Мне также интересно - кто автор. Предлагаю обсуждать суть вопроса, а не мою скромную персону. почему GC обуждают в контексте Java? Ну вроде как 100 временных строк не удаляются сразу из-за алгоритма сборщика мусора, который обеспечивает быстрое выделение, но может откладывать освобождение памяти сравнительно надолго. Это мне так сказали. Отсюда обсуждение плавно перешло на систему управления памятью. я считаю неполным без код-ревью и комментариев этого исходника со стороны сообщества Java в котором мы находимся Это просто пример проблемного кода, выбранный нарочно, не более. Все таки операцию + я бы для строк отменил в Java, раз уж она такая дурно пахнущая, а выгоды от нее не видно никакой. Просматривать тогда меньше пришлось бы - ведь компилятор по идее должен брать на себя часть работы по отсеиванию плохого кода. Заодно и Integer.toString на отмену просится или есть мнения, что оно может быть не дурно пахнущим? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 03:12 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene New, у тебя куча претензий к java, но всё упирается в незнание тонкостей языка. начни работать, а не обсуждать и будет польза. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 03:41 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Я собрал на Jdk8 следующий исходник. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Вот что внутри байткода. Код: 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.
Прошу комментарии сообщества. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:09 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, Код: java 1.
это комменты декомпилятор пишет? если да - то какие проблемы :) тогда следующий тест - загрузить из текстового файла по строчно. помнится у меня грузилось очень долго , но это было в 6 java.... если не в 5... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:36 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Утилита javap генерит все. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:41 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonУтилита javap генерит все.значит компилятор очень умный и не понятно откуда Eugene New Код: java 1. 2. 3. 4.
пожирает память, создавая 100 объектов, причем почему то одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:46 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
вадя тогда следующий тест - загрузить из текстового файла по строчно. помнится у меня грузилось очень долго , но это было в 6 java.... если не в 5... Я думаю что со времен java5 слишком много всего поменялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:46 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
mayton, может из-за этого Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:48 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
если да - то какие проблемы Проблемы все же есть. 1. new StringBuilder внутри цикла 2. Integer.toString это new String внутри цикла 3. StringBuilder.toString это new String внутри цикла ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:49 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonЯ думаю что со времен java5 слишком много всего поменялось.еще как много... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:52 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
То есть внутри цикла здесь создается 200 объектов String, 100 объектов StringBuilder. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:52 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Надо дальше копать. Я катаюсь на восьмой модели. У кого девятка? Десятка? Пробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 09:53 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonЯ собрал на Jdk8 следующий исходник. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Вот что внутри байткода. Код: 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.
Прошу комментарии сообщества. 21678798 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 10:21 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Siemargl, читай 21680335 в бесконечном цикле до наступления просветления. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 10:31 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewSiemargl, читай 21680335 в бесконечном цикле до наступления просветления. А что там читать, код написан криво уже не раз сказали в ветке об этом. Хочешь пиши криво, хочешь правильно. Криво или правильно зависит от ситуации. Хочешь в цикле создавать новые объекты создавай и не жалуйся что они создаются, не хочешь создавать не создавай и не жалуйся что они не создаются. по сути Integer.toString(12) явно говорит, сделай объект string представлящий число. stringBuilder.append(12) строку не сделает а просто пишет chars в свой буфер И тот и этот метод воспользуются тем же самым Integer.getChars, только Integer.toString создает новый char array и в конце сделает new String(chars[]) а stringbuilder прежложит дописать в свой заранее выделенный char array. Java дает тебе две пилюли одну синюю другую красную, выбирай. И не жалуйся зачем потом выбрал синюю. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:01 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
Eugene NewТо есть внутри цикла здесь создается 200 объектов String, 100 объектов StringBuilder. И что? Русским язЫком сказать что хочешь? Хочешь обсуждать содержательно, замени в своем коде String на int и этот код обсуждай. В нем ни одного объекта создано не будет. Код: java 1. 2. 3. 4. 5. 6.
на каком языке так программировать рекомендовано, для какой машины? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 12:33 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
maytonобычно code-review на нормальном проекте не пропускает подобные "странности". [рекламная пауза] некоторые IDE уже на этапе разработки про подобные странности рапортуют ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 13:32 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
chpasha, ))))) Круто! LOL )) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 14:20 |
|
Что не так с Java String и как вы с этим боретесь?
|
|||
---|---|---|---|
#18+
некоторые IDE уже на этапе разработки про подобные странности рапортуют Им бы еще самим научится эти IDE грамотно писать. lleming, А что там читать, код написан криво уже не раз сказали в ветке об этом. По жизни недогоняющему Siemargl читать надо, причем до полного просветления - он решил, что компилятор все исправил и так можно писать. Чтобы говорить на любой пример плохого поведения программы, что код плохой и программист дурак, даже не нужно обладать разумом. Это может и попугай. Сформулировать критерии заранее, что можно и что нельзя, гораздо сложнее. Единого мнения по правилам применения String я тут не вижу. (недогоняющих просьба не беспокоится). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2018, 20:34 |
|
|
start [/forum/topic.php?fid=59&msg=39705267&tid=2121729]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
others: | 340ms |
total: | 510ms |
0 / 0 |