Описание тега java-memory-model
Модель памяти Java (JMM) описывает, какие исполнения программы допустимы, путем определения того, какие значения могут наблюдаться при чтении общей переменной в соответствии с определенными правилами.
2
ответа
JMM и нежелательное использование trylock
Нежелательное использование трилока T1 T2 x = 42; while (lock.trylock()) lock.lock(); lock.unlock(); assert(x == 42); В java и C++ модели памяти позволяют x=42 перемещаться после блокировки (1). И поэтому assert может потерпеть неудачу в потоке T2. …
06 янв '15 в 00:28
3
ответа
OutOfMemoryError: пространство кучи Java при запуске jruby на консоли rails, но не при использовании всей памяти, определенной -J-Xmx
У меня есть приложение rails 3, использующее jruby 1.7, и я пытаюсь использовать консоль rails в своей локальной среде разработки (OS X 10.8 с jdk 7) в ситуации, которая потребует много памяти. Я запускаю консоль рельсов следующим образом: jruby -J-…
14 фев '13 в 14:34
3
ответа
Что гарантирует безопасность потоков в Guava ImmutableList?
Javadoc в ImmutableList Гуавы говорит, что у класса есть свойства ImmutableCollection Guava, одним из которых является безопасность потоков: Поток безопасности. Доступ к этой коллекции безопасен одновременно из нескольких потоков. Но посмотрите на т…
07 ноя '18 в 22:29
1
ответ
Java 8 Распределение памяти
Давайте предположим, что у меня есть JDK/JRE 8, также я добавил JAVA_OPTS= -Xmx8G -Xms1G. Я указал без каких-либо других параметров (java -jar 1.jar; java -jar 2.jar) 2 простых банок. Так что теперь у меня есть два процесса Java. 1) Выполнены ли они…
23 янв '18 в 14:46
2
ответа
Последовательное непротиворечивое объяснение
Я смотрю видео с конференции java jpoint. У меня вопрос о следующем слайде из доклада Aleksey Shipilev: Извините за не английский на слайде. На самом деле автор говорит, что невозможно, чтобы набор переменных был r1 = 1 (Y) r2 = 0 (x) r3 = 1 (x) r4 …
23 окт '17 в 12:37
3
ответа
В чем разница между энергозависимым и синхронизированным?
Я пытаюсь увидеть как volatile работает здесь. Если я заявляю cc как volatileЯ получаю вывод ниже. Я знаю, что результат выполнения потока меняется время от времени, но я где-то читал, что volatile такой же как synchronized, так почему я получаю это…
15 мар '16 в 21:52
1
ответ
Является ли JAXB безопасным для одновременного доступа (как это делается)
Я предполагаю, что JAXB вызывает конструктор с нулевым аргументом, а затем начинает заполнять энергонезависимые поля и добавляет элементы в списки. В моем собственном коде: Сразу после этого (unmarshalling) сгенерированные bean-компоненты депортирую…
25 мар '12 в 21:19
2
ответа
Караф из-за ошибки памяти
Я использую Karaf 2.3.0 для развертывания моих комплектов активатора OSGi и выставления моих удаленных сервисов как включенных отдыха. Thigs работают нормально. Только однажды я получил ошибку нехватки памяти в журналах karaf (прикрепление журналов)…
21 июл '14 в 05:19
2
ответа
Многопоточное состояние Java в общем массиве символов
Предположим, у меня есть следующее: char[] shared = new char[]{'a', 'b'}; ExecutorService exec = Executors.newCachedThreadPool(); Future<?> f1 = exec.submit(() -> shared[0] = 'A'); Future<?> f2 = exec.submit(() -> shared[1] = 'B');…
30 май '18 в 04:55
1
ответ
Модель памяти Java 7 такая же, как у JSR-133?
Я перечитывал спецификацию JSR-133, когда мне стало интересно, произошли ли какие-либо изменения в выпуске Java 7. То есть, если 133 был устаревшим или все еще действительным. Я не нашел в Google ничего об изменениях в модели памяти для Java 7, но я…
02 янв '12 в 20:46
3
ответа
Окончательная и нестабильная гарантия относительно безопасной публикации объектов
Из книги Java параллелизм на практике: Чтобы безопасно опубликовать объект, и ссылка на объект, и состояние объекта должны быть видны другим потокам одновременно. Правильно сконструированный объект может быть безопасно опубликован: Инициализация ссы…
09 фев '13 в 17:03
1
ответ
StoreLoad Память Барьер
Я не могу понять определение барьера StoreLoad в Cooperbook JSR-133. store1; StoreLoad; LOAd2 Барьеры StoreLoad защищают от последующей загрузки неправильно, используя значение данных Store1, а не от более недавнего хранилища в то же место, выполнен…
15 янв '14 в 21:00
2
ответа
Как узнать, где в памяти находится точный молодой / старый ген?
Недавно мне удалось получить адрес объекта с помощью класса sun.misc.Unsafe. И теперь я пытаюсь программно найти фактическое поколение, где находится мой объект. Для этого я хочу знать начальную и конечную точки каждого поколения. Если Java (Oracle …
02 июн '15 в 15:13
2
ответа
Локальный класс потока Java
Есть ли способ сообщить JVM, что класс используется исключительно из одного потока => JVM разрешено оптимизировать операции с полями (загружать / хранить) действий перекрестной синхронизации?
12 янв '15 в 12:43
2
ответа
Отношение "происходит до" в модели памяти Java
Что касается JLS ch17 Threads and Locks, в нем говорится: "если одно действие происходит до другого, то первое видно и упорядочено до второго"; Я думаю: (1) Что на самом деле означает сказать "заказано раньше"? Потому что даже если action_a произойд…
24 дек '14 в 12:16
6
ответов
Синхронизация модели памяти Java: как вызвать ошибку видимости данных?
"Параллелизм Java на практике" приводит следующий пример небезопасного класса, который из-за характера модели памяти Java может работать вечно или вывести 0. Проблема, которую этот класс пытается продемонстрировать, заключается в том, что переменные…
22 янв '12 в 13:00
1
ответ
Что на самом деле накладные расходы памяти в Java?
Я прочитал, что является "потреблением памяти объекта в java" и " что является объемом памяти" объекта в java. Но я все еще в замешательстве. Что такое накладные расходы памяти? это padding? Что такое JVM со сжатыми указателями? это reference?? Если…
12 окт '16 в 06:58
0
ответов
Ява летучих и строительных объектов
Мне нужен совет модели памяти. Как мы знаем volatile write и последующее volatile read есть отношения до того. Также мы знаем, что конструкторы не синхронизированы и между возвратами конструкторов и использованием инициализации полей нет никаких иск…
30 сен '18 в 18:28
3
ответа
Согласованность памяти Java LockSupport
Java 6 API вопрос. Звонит LockSupport.unpark(thread) иметь отношение до случившегося к возвращению из LockSupport.park в только что непаренной ветке? Я сильно подозреваю, что ответ - да, но Javadoc, кажется, не упоминает об этом явно.
19 мар '10 в 04:55
2
ответа
Java - энергозависимая ссылка на изменяемый объект - обновления полей объекта будут видны всем потокам
... без дополнительной синхронизации? Класс Tree ниже предназначен для доступа к нескольким потокам (он является одноэлементным, но не реализован через перечисление) class Tree { private volatile Node root; Tree() { root = new Node(); // the threads…
25 май '14 в 13:16