Hello, jazzer!
You wrote on Wed, 31 Jan 2007 10:51:36 GMT:
j>>>>> Вот как раз с GC и была проблема. j>>>>> Он банально не успевал чистить память, в результате все j>>>>> корилось из-за нехватки памяти.
YK>>>> А какой конкретно механизм сборки мусора там использовался? j>>> Понятия не имею, я не джавист.
YK>> Сложно тогда о чем-то разговаривать
j> Сложно, а как же
j> Но я исхожу из того, что люди там в команде были достаточно j> квалифицированные и знали, что делают. И они наверняка знали и про j> хот спот, и про механизм (я даже не знал, что в JVM им можно j> управлять, а оно вот как, оказывается).
Мне это все интересно в свете того, что (по-твоим словам) память не успевала очищаться сборщиком мусора. Если причиной тому был большой размер кучи, то возможно проблема решалась бы включением generational GC и соответствующей настройкой размера young/old generations.
Здравствуйте, Yuri Khomic, Вы писали:
YK>Мне это все интересно в свете того, что (по-твоим словам) память не успевала очищаться сборщиком мусора. Если причиной тому был большой размер кучи, то возможно проблема решалась бы включением generational GC и соответствующей настройкой размера young/old generations.
Вполне возможно, что там реализовался вариант, о котором говорил Cyberax здесь
. Мне говорили, что она падает с OutOfMemory — естественно, я предположил, что это потому, что она не успевала очищаться. А оно вон еще как может, оказывается.
YK>Насчет сборки мусора в HotSpot — вот навскидку, можешь почитать если интересно YK>http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html
Здравствуйте, Cyberax, Вы писали:
C>Yuri Khomic wrote: >> А какой конкретно механизм сборки мусора там использовался? >> И не происходило ли это во времена когда еще не было HotSpot? C>Есть такая особенность у Java-вского GC, он может бросать OOM, если C>память слишком быстро распределяется (особенно это классно, когда размер C>кучи в пару-тройку гигабайт). Лечится тюнингом опций.
А каких опций, если не секрет? (Только мне смысл опций, если можно, а не просто названия )
Yuri Khomic wrote: > Мне это все интересно в свете того, что (по-твоим словам) память не > успевала очищаться сборщиком мусора. Если причиной тому был большой > размер кучи, то возможно проблема решалась бы включением generational GC > и соответствующей настройкой размера young/old generations.
Gen. GC в Java весьма сложно отключить
> Насчет сборки мусора в HotSpot — вот навскидку, можешь почитать если > интересно > http://www.javaworld.com/javaworld/jw-01-2002/jw-0111-hotspotgc.html
Механизм HotSpot напрямую к GC не относится.
jazzer wrote: > C>Есть такая особенность у Java-вского GC, он может бросать OOM, если > C>память слишком быстро распределяется (особенно это классно, когда размер > C>кучи в пару-тройку гигабайт). Лечится тюнингом опций. > А каких опций, если не секрет? (Только мне смысл опций, если можно, а не > просто названия )
Ооо... Ты просишь тайны шаманства раскрыть?
В общем, там есть несколько алгоритмов (parallel GC, incremental и т.п.)
и у них куча опций. В основном, надо смотреть на MaxPermSize
(максимальный размер permanent-кучи), кроме того, оказалось очень важно
найти то место, с которого GC должен исполнить полный цикл GC (сейчас не
вспомню опцию). Ну и очень помогла опция "XX:SurvivorRatio", которая
указывает какой делать размер для старой кучи.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Андрей Хропов, Вы писали:
АХ>>Хм, MS так не думает. CC>Открою тебе страшную тайну: микрософт думает только о том, как продать свои творения и подсадить на них еще больше народу.
Естественно, но подумай почему они теперь продвигают связку C# + .NET + XNA, а не C++ + COM + DirectX как раньше. Значит у новой технологии есть определенные преимущества.
Здравствуйте, dmz, Вы писали:
dmz>Мое утверждение: C++ не нужен для разработки серверов в 99.9% случаев. СУБД — это как раз оставшийся процент случаев. Разработка на нем дольше, сложнее, требует более высокой квалификации и не дает на этом классе задач никаких особенных преимуществ. С удовлетворением могу заметить, что эту точку зрения разделяют многие — например, dmz>Ericsson.
Вообщето некоторое время искал и нашел, Oracle из соображений портируемости и стабильности написан на чистом С. И на С++ переписывать даже и не думают.
Hello, Cyberax!
You wrote on Wed, 31 Jan 2007 11:36:25 GMT:
>> Мне это все интересно в свете того, что (по-твоим словам) память >> не успевала очищаться сборщиком мусора. Если причиной тому был >> большой размер кучи, то возможно проблема решалась бы включением >> generational GC и соответствующей настройкой размера young/old >> generations. C> Gen. GC в Java весьма сложно отключить
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, VladD2, Вы писали:
VD>>Значит С++ не кросплатформный? У него в стандарте тоже нет переносимого ГУИ. CC>Пардон, WinForms входит в комплект библ .NET. о сути является стандартной библиотекой.
В стандарт CLI она не входит. Так что она настолько же "стандартна" как, например, MFC для С++.
Просто MS в своей реализации CLI под названием .NET поставляет больше библиотек, чем есть в стандарте. Конечно, MS пудрит мозги помещая их в пространство имен "System.", хотя на самом деле их место в "Microsoft.".
Стандарт (в редакции ISO/IEC 23271:2006(E)) требует только наличия следующих библиотек (там правда еще есть ньюансы с профилями):
5 The standard libraries:
5.1 General comments
5.2 Runtime infrastructure library
5.3 Base Class Library (BCL)
5.4 Network library
5.5 Reflection library
5.6 XML library
5.7 Extended numerics library
5.8 Extended array library
5.9 Vararg library
5.10 Parallel library
CC> В С++ в стандартной библиотеке этого нет. Стандартные библиотеки должны быть переносимы,
Они и переносимы. Проблемы с .NET-технологиями от MS (WinForms, ASP.NET, ADO.NET, WCF, WWF, WPF). Но если пользоваться только тем что есть в Mono, то получим кроссплатформенность в рамках Mono. Т.е. сборка будет запускаться на любой платформе, где есть Mono.
VD>>А в Моно есть поддержка GTK. CC>GTK есть в стандартных библиотеках .NET? Нету? Тогда мимо кассы...
В стандартных библиотеках CLI нет вообще ни слова о GUI.
CC>Реализация VM для дотнета только одна.
Как раз VM то целых 4 : MS.NET, Rotor, Mono, dotGNU, и Mono запускается очень даже много где (вплоть до всяких Nokia 770), а вот библиотек больше всего у MS.NET.
AVC>Фразу о конкретности адресата, наверное, Вы не заметили. AVC>По поводу указанной потребности — можете обсудить это с Plague. AVC>Впрочем, еще проще считать, что конструкцию if(const==var) злые оберонщики придумали.
На самом деле тот код я написал чисто для того чтобы попробовать — "а можно ли так?". Попробовал, получилось, но с оговорками... НИ В КОЕМ СЛУЧАЕ не реккомендую использовать в реальном проекте, а включить Варнинги компилятора. И варнинги — это не значит, что так не нужно писать, а что, возможно, есть ошибка. Использование = в условиях — совместимость с языком С.
PS: это, кстати, 2004й год.. 2.5 года назад... мои личные извращения... =)
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, eao197, Вы писали:
E>>Главным образом я хочу получить ответ на свой вопрос: E>>
E>>Вот тут не очень понял. Ты имеешь ввиду, что сложные кроссплатформенные системы нельзя писать на C++? Или что тем, кто не пишет сложных кроссплатформенных систем, C++ с его фичами не нужен?
E>>поскольку твою фразу о разработке сложных кроссплатформенных систем я не понял
VD>Мне кажется, он имел в виду, что на С++ очень сложно писать переносимый код.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Естественно, но подумай почему они теперь продвигают связку C# + .NET + XNA, а не C++ + COM + DirectX как раньше. Значит у новой технологии есть определенные преимущества.
Это все поможет продавать железо партнеров, висту и xbox360 + подсаживание на иглу .NET толпы прогеров.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Открою тебе страшную тайну: микрософт думает только о том, как продать свои творения и подсадить на них еще больше народу.
Не надо так плохо думать о народе, у народа тоже есть голова, народ не будет покупать лажу. Скорее майкрософту надо напрягаться, пытаться выпускать качественные продукты, а то ведь у народа есть и альтернативы от конкурентов.
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Здравствуйте, Kisloid, Вы писали:
K>Здравствуйте, AndreiF, Вы писали:
AF>>И усилению самомнения программиста, который продравшись через горы проблем и заморочек, добирается наконец до решения задачи AF>>Никакой другой язык не дает такого удовлетворения — там слишком просто всё делается
K>Ошибаешься, Лисп на много больше усиливает самомнение K>На своем горьком опыте знаю, каждая законченная программа вызывает такой мощный поток эндорфинов, что С++ рядом не валялся
Здравствуйте, Kisloid, Вы писали:
K>Здравствуйте, CreatorCray, Вы писали:
CC>>Открою тебе страшную тайну: микрософт думает только о том, как продать свои творения и подсадить на них еще больше народу.
K>Не надо так плохо думать о народе, у народа тоже есть голова, народ не будет покупать лажу. Скорее майкрософту надо напрягаться, пытаться выпускать качественные продукты, а то ведь у народа есть и альтернативы от конкурентов.
К сожалению эту "голову", мне кажется, ты преувеличиваешь. Иначе бы не было целого вороха "исторически сложившихся" решений, кривых еле работающих, где порой поддержка выходит дороже переписывания по-новому. Пример — Y2K, хотябы.
Здравствуйте, Андрей Хропов, Вы писали:
АХ>А как J? Забористо? А Haskell?
J незнаю, ни разу в глаза не видел. А вот Хаскель к сожалению хватило времени только обзорно посмотреть, но в целом понравилось, следующим по очереди к изучению как раз и стоит Хаскель.
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))
Здравствуйте, Курилка, Вы писали:
К>К сожалению эту "голову", мне кажется, ты преувеличиваешь. Иначе бы не было целого вороха "исторически сложившихся" решений, кривых еле работающих, где порой поддержка выходит дороже переписывания по-новому. Пример — Y2K, хотябы.
Если уж говорить про кривые и еле работающие исторически сложившиеся решения, то один из венцов таких творений — boost — никакого отношения к корпорациям не имет
Здравствуйте, AndreiF, Вы писали:
AF>Здравствуйте, Курилка, Вы писали:
К>>К сожалению эту "голову", мне кажется, ты преувеличиваешь. Иначе бы не было целого вороха "исторически сложившихся" решений, кривых еле работающих, где порой поддержка выходит дороже переписывания по-новому. Пример — Y2K, хотябы.
AF>Если уж говорить про кривые и еле работающие исторически сложившиеся решения, то один из венцов таких творений — boost — никакого отношения к корпорациям не имет
Вообще-то я про корпорации ничего не говорил
В корпорациях тоже люди, кстати работают...
Здравствуйте, eao197, Вы писали:
E>По поводу GC: Страуструп создавал C++ имея опыт работы на языке с автоматической сборкой мусора. Поэтому он принципиально сделал C++ без таковой. И все последствия именно из этого.
Ну и не только. Просто обязательный GC очень сузил бы сферу применения, а опциональных Страустурп ждал от компиляторов.
E>По поводу событий: как разработчик одного из событийно-ориентированных фреймоворков я рад, что в языке нет "стандартных" событий. Из-за этого для различных семейств различных задач можно делать различные способы реагирования на события.
K>>Наконец, почему, чтобы понять C++, нужно от и до внимательно прочитать Страуструпа, а потом ещё Липпмана?
E>Вы думаете этого достаточно? E>Я сильно сомневаюсь. C++ -- он, имхо, как любой иностранный язык -- можно учить всю жизнь.
K>>Но вот беда: есть языки, к которым подобных вопросов не задаётся.
E>Но, во-первых, вот и славно. Затем же в C++ камнями кидаться. Тем более, что как я понял, C++ вообще лежит далеко в стороне от ваших профессиональных задач и интересов.
E>И, во-вторых, оставте нам, старикам, нашу любимую игрушку. Ну нравится нам наша музыка, хотя для вас, молодежи, это просто ретро. И мы хотим ее играть, сами себе, в своем доме престарелых. А вы к нам через пару лет присоединитесь со своей музыкой, которую уже кто-то другой будет считать ретро
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы