Fixing the Java Memory Model

User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Fixing the Java Memory Model

Post by Sabina »

Вчера на Java SIG в Майнтен Вью выступал один мужик вот с этим докладом
http://www-106.ibm.com/developerworks/java/library/j-jtp02244.html
http://www-106.ibm.com/developerworks/java/library/j-jtp03304/

Возможно многие из вас давно в курсе, но для меня было открытием, что синхронизация была до конца понята и определена начиная только с 1.4

Safety Issues in Multi-Threaded Systems
• Many intuitive assumptions do not hold
• Some widely used idioms are not safe
- Original Double-checked locking idiom
- Checking non-volatile flag for thread termination
• Can’t use testing to check for errors
- Some anomalies will occur only on some platforms
- e.g., multiprocessors
- Anomalies will occur rarely and non-repeatedly


Кому интересно, еще имеет смысл посмотреть
http://www.cs.umd.edu/users/pugh/java/memoryModel/TS-2331.pdf
Это слайды с презентации Bill Pugh на Java One. Он первым обнаружил некондиционность Java Memory Model:
В 1.5 (официально, вообще говоря с 1.4) многие проблемы с моделью пофиксены.

Сабина
User avatar
dim635csi
Удалён за грубость
Posts: 3347
Joined: 23 Nov 1999 10:01
Location: NC -> NYC -> KC -> Chicago

Post by dim635csi »

:gen1:

nice. Thank you!
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

Sabina wrote:
Safety Issues in Multi-Threaded Systems
• Many intuitive assumptions do not hold
• Some widely used idioms are not safe
- Original Double-checked locking idiom
- Checking non-volatile flag for thread termination
• Can’t use testing to check for errors
- Some anomalies will occur only on some platforms
- e.g., multiprocessors
- Anomalies will occur rarely and non-repeatedly

...
В 1.5 (официально, вообще говоря с 1.4) многие проблемы с моделью пофиксены.

Достаточно интересно. Параллельное программирование - это здесь вам не тут :mrgreen: Тут надо мЫшление перестраивать на другой лад.

Кстати "Checking non-volatile flag for thread termination" насколько я помню было задокументировано где-то в JVM спеках что это делать низзя ибо проц имеет все права закэшировать "non-transient" члены класса и не смотреть на них. Даже точки, где происходит "сброс кэша" с его перечитыванием указаны - вход в synchronized-блок (только не помню по чему должно быть synchronized). Но вот как раз для таких флагов оповещения и надо использовать transient модификатор, а не только для предотвращения сериализации.

Ну и естественно параллельные анамалии воспроизвести - это совсем не тривиально. Даже на одной и той же платформе (Винде), не говоря уже про весь зоопарк поддерживаемых. Помнится как-то раз приходилось удалённо выцеплять такую аномалию :х

P.S. Знаете ли Вы что, менее 25% программистов могут полноценно понять параллельную работу и взаимодействие более 3х потоков исполнения?
P.P.S Для масспараллельных систем (число потоков/процессоров исчисляется десятками тысяч) таких людей единицы.
I hated LA
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

WildVlad wrote:P.S. Знаете ли Вы что, менее 25% программистов могут полноценно понять параллельную работу и взаимодействие более 3х потоков исполнения?


:( Надеюсь это из всего числа, а не из тех, кто регулярно занимается multi-threading programming?

Тезисно из того, что запомнилось:
- order of execution is relative to "observer" (waiting thread, or thread observing execution by other thread)
- reordering takes place and it is caused by processor, compiler or cache. Здесь он выделил Интел и Спарк как самые надежные и эффективные для синхронизации, а с дешевыми все гораздо медленнее, менее рационально и platform-related багов много вылазит.
- properly done synchronization is the key to success:
*both read and write must be synchronized
*two synchronized blocks cannot be re-ordered
*do not start thread from constructor, etc.
- synchronization is not only about locks/unlocks. First of all it is about synchronizing "view of memory" between threads
- Must use synchronization to enforce visibility and ordering as well as mutual exclusion
- If you use synchronization correctly, you will not be able to see reorderings
- Problems caused by unproper synchronization can be identified by tools for finding common bug patterns (здесь он упомянул название Inspection gadget...[something])
В JDK 1.5 имплементирована JSR 166, смотри пакет java.util.consurrent (classes AtomicInteger, AtomicLock, etc.)

Кстати в 1.5 еще и много monitoring tools добавлено. Вчера про это китайка говорила из Сана:

JVM & Logging:
1) Runtime Subsystems
2) Class Loading
3) Compilation
4) OS
5) Logging
6) Thread subsystems (thread blocked, which monitor, who is the owner of the monitor, how many times blocked, thread CPU time. etc.)

В 1.5 мониторинг работает только для локальной системы, но теоретически говорили и про RMI. Решается мониторинг посредством MXBean - специальные management beans.

Например memory pool management с новыми бибилиоетками осуществляется очень просто, типа

Low memory detection:

Code: Select all

pool.setUsageThreshold (my Threshold);
while(true)  {
   if ....ThresholdExceeded
        StopRecevingTasks();
  else
        ResumeReceivingTasks();


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

Сабина
Last edited by Sabina on 08 Jul 2004 01:35, edited 1 time in total.
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

Sabina wrote:
WildVlad wrote:P.S. Знаете ли Вы что, менее 25% программистов могут полноценно понять параллельную работу и взаимодействие более 3х потоков исполнения?


:( Надеюсь это из всего числа, а не из тех, кто регулярно занимается multi-threading programming?

Ваш пост показывает, что результат не сильно отличается между этими двумя множествами :mrgreen: И на самом деле оценку в 25% можно усилить (снизить). :mrgreen: :mrgreen: :mrgreen:
Потому как тезисы, которые Вы записали - это прописные истины (кроме запуска нити из конструктора - не вижу причин, если код конструктора не кидаетеся исключениями, да если и кидается, но нить не демоническая, то её рано или поздно прибъёт мусорщик = вот такой каламбурчик получился :mrgreen: )
И как не сложно понять, были на коференции не только новички, но и "те, кто регулярно занимается multi-threading programming?" которым в очередной раз повторяли одно и то же (готов поспорить, что некоторые из них услышали про execution reordering впервые).

Кстати, в Java многопоточность средствами языка + среды исполнения + компилятора поддерживается довольно слабо ибо нету реализаций довольно стандартных параллельных идиом, да и автораспараллеливание совсем не поддерживается.

А давайте ка я пройдусь по списку?

- order of execution is relative to "observer" (waiting thread, or thread observing execution by other thread)

А. Энштейн. Специальная теория относительности :mrgreen: :mrgreen: :mrgreen:

- reordering takes place and it is caused by processor, compiler or cache. Здесь он выделил Интел и Спарк как самые надежные и эффективные для синхронизации, а с дешевыми все гораздо медленнее, менее рационально и platform-related багов много вылазит.

См. архитектуру процов. В данном конкретном случае даже чтение научно-популярных железячных новостей сильно помогает.

- properly done synchronization is the key to success:
*both read and write must be synchronized
*two synchronized blocks cannot be re-ordered

Азы параллельного программирования. Я бы сказал, что без этого писать, конечно можно, но работать будет как бох на душу пошлёт.
*do not start thread from constructor, etc.

Спорное утверждение. Грозит только потерей ссылки на нить при исключении ниже по тексту конструктора.
- synchronization is not only about locks/unlocks. First of all it is about synchronizing "view of memory" between threads

Это самое начало букваря :mrgreen:
- Must use synchronization to enforce visibility and ordering as well as mutual exclusion
- If you use synchronization correctly, you will not be able to see reorderings

Следсвия из предыдущих тезисов.
- Problems caused by unproper synchronization can be identified by tools for finding common bug patterns (здесь он упомянул название Inspection gadget...[something])

Вот это надо бы как-нибудь глянуть. Хотя большинство ошибок с параллельностью - логические (недостатки, недодуманность алгоритмов)
В JDK 1.5 имплементирована JSR 166, смотри пакет java.util.consurrent (classes AtomicInteger, AtomicLock, etc.)

Надо посмотреть на этот JSR.
Кстати, они JDK1.5 не собираются назвать как-нить типа Java3? А то изменений уже порядком набирается %)
[/quote]

Тезисы эти очень!!! полезны новичкам - чтобы они на своём опыте к ним не приходили. Но их надо осмыслить, особенно про теорию относительности и "что есть блокировка".
I hated LA
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Re: Fixing the Java Memory Model

Post by hooch »

WildVlad wrote:
Sabina wrote:
WildVlad wrote:
Кстати, в Java многопоточность средствами языка + среды исполнения + компилятора поддерживается довольно слабо ибо нету реализаций довольно стандартных параллельных идиом, да и автораспараллеливание совсем не поддерживается.



Автораспараллеливание средствами языка программирования???
И зачем тогда OS? :pain1:
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

hooch wrote:Автораспараллеливание средствами языка программирования???
И зачем тогда OS? :pain1:

Да, а что? Например бывает HighPerf C/Fortran в которых есть дополнительные инструкции типа forEach и тело цикла может исполняться в независимых потоках. Кроме того, есть готовые параллельные библиотеки. Ну и в некоторых случаях компилятор может догадаться о возможности распараллелить код (кстати, Intel C для Itanium умеет что-то сам распараллеливать, насколько я помню). Тут нужна поддержка этого дела комплексом: язык - компилятор - среда исполнения. Если в одном из звеньев поддержки нет, то её можно съэмулировать в других, но так хорошо не получится.

Вы же не удивляетесь, например Intel HT (HyperThreading)? А спекулятивному исполнению лет уже десяток если не больше! Почему процессор может провести анализ интсрукций, а компилятор, который видит всю картину программы такое сделать не может?
I hated LA
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Re: Fixing the Java Memory Model

Post by tengiz »

Sabina wrote:Тезисно из того, что запомнилось:
- order of execution is relative to "observer"...
- reordering takes place and it is caused by processor, compiler or cache...
- properly done synchronization is the key to success:...
*both read and write must be synchronized
*two synchronized blocks cannot be re-ordered
*do not start thread from constructor, etc.
- synchronization is not only about locks/unlocks. First of all it is about synchronizing "view of memory" between threads
- Must use synchronization to enforce visibility and ordering as well as mutual exclusion
- If you use synchronization correctly, you will not be able to see reorderings...

Хм, вот этого я не ожидал, честно говоря. Я в недоумении - зачем нужна была Ява на сервере, если для продуктивной работы над качественным серверным кодом нужно знать/уметь делать практически всё, что нужно знать/уметь делать инженеру-разработчику на C/C++. Не проще ли было просто на C/C++ продолжать работать? К чему все эти игры нужны были?

Одно из обещаний Явы - упрощение работы над такими вещами в том числе. В итоге на фоне необходимости ясного понимания как же на самом деле работает synchronizing "view of memory" between threads преимущества Явы в виде большей простоты, автоматического сборщика мусора, встроенных в язык средств синхронизации, платформной независимости (тут же вылезает вопрос - а на самом ли деле абстрагирует JVM модели памяти конкретных аппаратных платфром или же есть досадные нюансы, которые сводят на нет эту независимость когда дело доходит до "настоящего" высокоэффективного серверного кода?) и пр. уже и не смотрятся так привлекательно.

Разумеется, ожидать от языка общего назначения той же прозрачности при многопотоковом доступе, которую обеспечивают системы обработки транзакций не следовало бы с самомого начала, но блин, хотя бы полдороги от C/C++ можно было бы и попробовать пройти.
Cheers
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Re: Fixing the Java Memory Model

Post by hooch »

WildVlad wrote:
hooch wrote:Автораспараллеливание средствами языка программирования???
И зачем тогда OS? :pain1:

Да, а что? Например бывает HighPerf C/Fortran в которых есть дополнительные инструкции типа forEach и тело цикла может исполняться в независимых потоках. Кроме того, есть готовые параллельные библиотеки. Ну и в некоторых случаях компилятор может догадаться о возможности распараллелить код (кстати, Intel C для Itanium умеет что-то сам распараллеливать, насколько я помню). Тут нужна поддержка этого дела комплексом: язык - компилятор - среда исполнения. Если в одном из звеньев поддержки нет, то её можно съэмулировать в других, но так хорошо не получится.

Вы же не удивляетесь, например Intel HT (HyperThreading)? А спекулятивному исполнению лет уже десяток если не больше! Почему процессор может провести анализ интсрукций, а компилятор, который видит всю картину программы такое сделать не может?


Java программер, а тем более компилятор не знают в какой среде будет исполняться программа (число процессоров, ОС, доступная память, трэд модел и т.д.) , так что оптимизация выполнения программы в смысле распараллеливания должна присходить на уровне ОС.
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

tengiz wrote:Хм, вот этого я не ожидал, честно говоря. Я в недоумении - зачем нужна была Ява на сервере, если для продуктивной работы над качественным серверным кодом нужно знать/уметь делать практически всё, что нужно знать/уметь делать инженеру-разработчику на C/C++. Не проще ли было просто на C/C++ продолжать работать? К чему все эти игры нужны были?

В большинстве случаев все эти фокусы засунуты в более-менее кривые-некривые реализации J2EE-контейнеров чьи спеки тоже являются частью стандарта.

И фокусы надо знать либо разработчикам J2EE-контейнеров, которые в реализуют некоторые частные случаи использования многопоточности, в частности (кроме persitency)

Ну и еще некоторым надо эти вещи делать самим :mrgreen: без J2EE :mrgreen:

tengiz wrote:Одно из обещаний Явы - упрощение работы над такими вещами в том числе. В итоге на фоне необходимости ясного понимания как же на самом деле работает synchronizing "view of memory" between threads преимущества Явы в виде большей простоты, автоматического сборщика мусора, встроенных в язык средств синхронизации, платформной независимости (тут же вылезает вопрос - а на самом ли деле абстрагирует JVM модели памяти конкретных аппаратных платфром или же есть досадные нюансы, которые сводят на нет эту независимость когда дело доходит до "настоящего" высокоэффективного серверного кода?) и пр. уже и не смотрятся так привлекательно.

В спеках JVM описаны моменты на которые НЕЛЬЗЯ надеяться. В частности многопоточный доступ к памяти.
Кроме того, согласитесь, код получается гораздо качественнЕе, если программист понимает во что трансформируется его абракадабра и как это всё будет выполнять проц, как он будет работать с памятью и т.д..
Азы знать даже программисту на Java не помешает :mrgreen:

tengiz wrote:Разумеется, ожидать от языка общего назначения той же прозрачности при многопотоковом доступе, которую обеспечивают системы обработки транзакций не следовало бы с самомого начала, но блин, хотя бы полдороги от C/C++ можно было бы и попробовать пройти.

J2EE есть треть от тех полдороги, о которых Вы говорите :mrgreen:
I hated LA
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

WildVlad wrote:
Sabina wrote: :( Надеюсь это из всего числа, а не из тех, кто регулярно занимается multi-threading programming?

Ваш пост показывает, что результат не сильно отличается между этими двумя множествами :mrgreen:


Мой пост совсем не показатель, ибо я ни к тем ни к другим пока не отношусь.

Кстати от гуру начинающему в копилку :)
Как вы считаете почему не рекомендуется использовать Thread.stop(); ?

Сабина
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

tengiz wrote:Хм, вот этого я не ожидал, честно говоря. Я в недоумении - зачем нужна была Ява на сервере, если для продуктивной работы над качественным серверным кодом нужно знать/уметь делать практически всё, что нужно знать/уметь делать инженеру-разработчику на C/C++. Не проще ли было просто на C/C++ продолжать работать?


То есть на С++, чтобы написать вот это

Code: Select all

pool.setUsageThreshold (my Threshold); 
while(true)  {
   if ....ThresholdExceeded
        StopRecevingTasks();
  else
        ResumeReceivingTasks();


тоже шесть строк кода уйдет :pain1: ?

Сабина
Last edited by Sabina on 08 Jul 2004 01:36, edited 1 time in total.
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

hooch wrote:Java программер, а тем более компилятор не знают в какой среде будет исполняться программа (число процессоров, ОС, доступная память, трэд модел и т.д.) , так что оптимизация выполнения программы в смысле распараллеливания должна присходить на уровне ОС.

Вы пропускаете среду исполнения - тоже часть Java-спецификаций, которая может абстрагировать определённые детали (либо эмулируя либо явно полагаясь на ОС).
А вот уже компилятор может полагаться на среду исполнения.
Ну а когда уже и компилятор будет знать о авто-распараллеливании, то и определённые индивидуумы могут попытаться это использовать :mrgreen:
I hated LA
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

Sabina wrote:Мой пост совсем не показатель, ибо я ни к тем ни к другим пока не отношусь.

Может я не чётко выразился, но я имел ввиду, что на семинаре были скорее всего не только новички, как Вы, для которых это беспорно полезно, но и "паралельные программисты" (10+ лет написания dstributed систем на J2EE :х ), которые это услышали в первый раз :)

Sabina wrote:Кстати от гуру начинающему в копилку :)
Как вы считаете почему не рекомендуется использовать Thread.stop(); ?

1. Остановка происходит в непредсказуемом месте, может быть для того и не предназначенном. То есть программа прерывается не там, где она считает нужной, а там, где захочит "сантехник Иванов".
2. Важное следтсвие из 1, но представляет самостоятельный интерес - освобождение ресурсов. Вспомним про finalize и всё становится очень запущенно. Может даже оказаться что нить и не остановится :)

Поэтому то и рекомендуют останавливать нить из самой себя, корректно освобождая ресурсы.
I hated LA
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Re: Fixing the Java Memory Model

Post by tengiz »

Sabina wrote:То есть на С++, чтобы написать вот это... тоже шесть строк кода уйдет :pain1: ?

Сабина - Вы какой-то странный вопрос задали. На C++ при наличии аналогичной библиотеки классов не просто то же количество строк понадобится, а буквально те же строки. Может, Вы что-то другое хотели спросить да просто не очень ясно сформулировали?
Cheers
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

tengiz wrote:
Sabina wrote:То есть на С++, чтобы написать вот это... тоже шесть строк кода уйдет :pain1: ?

...На C++ при наличии аналогичной библиотеки классов...

Более того, готов поспорить, что Сан эту библиотеку (или идею для неё) где-то позаимствовал, как он это обычно делает в последнее время.
I hated LA
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

tengiz wrote:Cабина - Вы какой-то странный вопрос задали. На C++ при наличии аналогичной библиотеки классов не просто то же количество строк понадобится, а буквально те же строки. Может, Вы что-то другое хотели спросить да просто не очень ясно сформулировали?


Наверное :) Ну хорошо, не С++, а lower level languages
Мне кажется это нормальная эволюция языков программирования. Мне искренне непонятно почему наличие такой же библиотеки в С++ вас бы устроило, а в Java раздражает?

Сабина
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

WildVlad wrote:
tengiz wrote:
Sabina wrote:То есть на С++, чтобы написать вот это... тоже шесть строк кода уйдет :pain1: ?

...На C++ при наличии аналогичной библиотеки классов...

Более того, готов поспорить, что Сан эту библиотеку (или идею для неё) где-то позаимствовал, как он это обычно делает в последнее время.


Интересно у кого они могли позаимстовать JVM monitoring?
И у кого еще есть аналоги ManagementBeans ?

Сабина
User avatar
WildVlad
Уже с Приветом
Posts: 3982
Joined: 13 Jul 2000 09:01
Location: SVX -> BOS -> BUR -> SJC

Re: Fixing the Java Memory Model

Post by WildVlad »

Sabina wrote:Интересно у кого они могли позаимстовать JVM monitoring?

Средства мониторинга и диагностики для OS были чуть ли не со времён счёт (абакусов).
I hated LA
User avatar
KVA
Уже с Приветом
Posts: 5347
Joined: 03 Feb 1999 10:01
Location: NJ, USA

Re: Fixing the Java Memory Model

Post by KVA »

Sabina wrote:Интересно у кого они могли позаимстовать JVM monitoring?


Идею где угодно. В приличных OS мониторинг есть, да .NET этим добром не обделен.
User avatar
tengiz
Уже с Приветом
Posts: 4468
Joined: 21 Sep 2000 09:01
Location: Sammamish, WA

Re: Fixing the Java Memory Model

Post by tengiz »

Sabina wrote:Мне кажется это нормальная эволюция языков программирования. Мне искренне непонятно почему наличие такой же библиотеки в С++ вас бы устроило, а в Java раздражает?

ОК, теперь понятнее :)

Да нет, меня ничего не радражает. Я просто отстал от жизни и полагал, что если Java всё-так несколько дальше ушёл от C/C++ в смысле привнесения в параллельное программирование качественных и высокоэффективных абстракций. Смысл которых избавить инжерена-разработчика от большей части головной боли, связанной с той парой дюжиной пунктов, которые Вы конспективно изложили по мотивам упомянутого доклада. Уважаемому господину Гослингу, сказавшему А (встроенная в язык синхронизация в виде замечательного слова synchronized и как бы встроенная многопоточность, хотя на самом деле никакой толком встроенности и нет), нужно было бы дело это довести до конца и сказать все остальные буквы алфавита тоже.

Иначе Java на серверах мало отличается от C/C++. Я только это и имел в виду. Больше ровным счётом ничего. Практический вывод который из этого следует для меня лично - никакого особенного интереса к Java на серверах у меня нет и пока быть не может. А жаль.

Хотя если Си шарп снизойдёт до реализации довольно старых красивых идей, которые с некоторых пор интересуют публику в MS Research - см.Introduction to Polyphonic C#, то может и Java тоже зачешется и рванёт в том же направлении. Вот тогда будет уже поинтереснее.

<added>
Вот чуть поинтереснее ссылка на PDF о Modern Concurrency Abstractions for C#.
</added>
Cheers
User avatar
Blake
Уже с Приветом
Posts: 1102
Joined: 16 Sep 2003 04:41
Location: Out Of Blue

Re: Fixing the Java Memory Model

Post by Blake »

Sabina wrote:И у кого еще есть аналоги ManagementBeans ?


У IBM :wink:
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: Fixing the Java Memory Model

Post by Sabina »

Blake wrote:
Sabina wrote:И у кого еще есть аналоги ManagementBeans ?


У IBM :wink:


А ссылку :wink: ?

Сабина
User avatar
Blake
Уже с Приветом
Posts: 1102
Joined: 16 Sep 2003 04:41
Location: Out Of Blue

Re: Fixing the Java Memory Model

Post by Blake »

Sabina wrote:
Blake wrote:
Sabina wrote:И у кого еще есть аналоги ManagementBeans ?


У IBM :wink:


А ссылку :wink: ?

Сабина


http://www.alphaworks.ibm.com/tech/mbeaninspector etc
User avatar
VladDod
Уже с Приветом
Posts: 56113
Joined: 06 May 2001 09:01

Re: Fixing the Java Memory Model

Post by VladDod »

hooch wrote:Автораспараллеливание средствами языка программирования???

Модула :pain1:
в реале супруги редко бывают друзьями, так как их отношения подпорчены сексом (с)Роза
Плавали-Знаем! (C)

Return to “Вопросы и новости IT”