Java memory model (original) (raw)
The Java memory model describes how threads in the Java programming language interact through memory. Together with the description of single-threaded execution of code, the memory model provides the semantics of the Java programming language. The original Java memory model developed in 1995, was widely perceived as broken, preventing many runtime optimizations and not providing strong enough guarantees for code safety. It was updated through the Java Community Process, as Java Specification Request 133 (JSR-133), which took effect back in 2004, for Tiger (Java 5.0).
Property | Value |
---|---|
dbo:abstract | The Java memory model describes how threads in the Java programming language interact through memory. Together with the description of single-threaded execution of code, the memory model provides the semantics of the Java programming language. The original Java memory model developed in 1995, was widely perceived as broken, preventing many runtime optimizations and not providing strong enough guarantees for code safety. It was updated through the Java Community Process, as Java Specification Request 133 (JSR-133), which took effect back in 2004, for Tiger (Java 5.0). (en) Модель памяти Java (англ. Java Memory Model, JMM) описывает поведение потоков в среде исполнения Java. Модель памяти — часть семантики языка Java, и описывает, на что может и на что не должен рассчитывать программист, разрабатывающий ПО не для конкретной Java-машины, а для Java в целом. Исходная модель памяти Java (к которой, в частности, относится «потоколокальная память»), разработанная в 1995 году, считается неудачной: многие оптимизации невозможно провести, не потеряв гарантию безопасности кода. В частности, есть несколько вариантов написать многопоточного «одиночку»: * либо каждый акт доступа к одиночке (даже когда объект давно создан, и ничего уже не может измениться) будет вызывать межпоточную блокировку; * либо при определённом стечении обстоятельств система выдаст недостроенного одиночку; * либо при определённом стечении обстоятельств система создаст два одиночки; * либо конструкция будет зависеть от особенностей поведения той или иной машины.(См. также: Double checked locking) В J2SE 5.0 (30 сентября 2004) появилась новая модель памяти, разработанная через Java Community Process под названием JSR-133. Она лучше отражала принципы работы современных процессоров и компиляторов, и другие языки брали идеи из модели Java. Основной вклад в её создание внесли Сарита Адве, Джереми Мейсон и . (ru) |
dbo:wikiPageExternalLink | http://www.cs.umd.edu/~pugh/java/memoryModel/ http://shipilev.net/blog/2014/jmm-pragmatics/ https://jakubstransky.com/2017/11/27/structure-of-java-virtual-machine-jvm/ http://www.cs.umd.edu/users/pugh/java/memoryModel/jsr-133-faq.html https://web.archive.org/web/20130925080251/http:/g.oswego.edu/dl/jmm/cookbook.html https://www.ibm.com/developerworks/library/j-jtp02244/j-jtp02244-pdf.pdf https://www.ibm.com/developerworks/library/j-jtp03304/j-jtp03304-pdf.pdf http://jcp.org/en/jsr/detail%3Fid=133 |
dbo:wikiPageID | 6814676 (xsd:integer) |
dbo:wikiPageLength | 9158 (xsd:nonNegativeInteger) |
dbo:wikiPageRevisionID | 1080399544 (xsd:integer) |
dbo:wikiPageWikiLink | dbr:C++ dbr:Lock_(computer_science) dbc:Java_platform dbr:Formal_semantics_of_programming_languages dbr:Happened-before dbc:Consistency_models dbr:Java_(programming_language) dbr:Java_version_history dbr:Java_Community_Process dbr:Java_concurrency dbr:Java_virtual_machine dbr:Operating_systems dbr:Partial_order dbr:Java_Language_Specification dbr:Processors dbr:Multiprocessor dbr:Thread_(computer_science) dbr:Memory_model_(computing) |
dbp:wikiPageUsesTemplate | dbt:Reflist |
dcterms:subject | dbc:Java_platform dbc:Consistency_models |
rdf:type | yago:WikicatConsistencyModels yago:Assistant109815790 yago:CausalAgent100007347 yago:LivingThing100004258 yago:Model110324560 yago:Object100002684 yago:Organism100004475 yago:Person100007846 yago:PhysicalEntity100001930 yago:Worker109632518 yago:YagoLegalActor yago:YagoLegalActorGeo yago:Whole100003553 |
rdfs:comment | The Java memory model describes how threads in the Java programming language interact through memory. Together with the description of single-threaded execution of code, the memory model provides the semantics of the Java programming language. The original Java memory model developed in 1995, was widely perceived as broken, preventing many runtime optimizations and not providing strong enough guarantees for code safety. It was updated through the Java Community Process, as Java Specification Request 133 (JSR-133), which took effect back in 2004, for Tiger (Java 5.0). (en) Модель памяти Java (англ. Java Memory Model, JMM) описывает поведение потоков в среде исполнения Java. Модель памяти — часть семантики языка Java, и описывает, на что может и на что не должен рассчитывать программист, разрабатывающий ПО не для конкретной Java-машины, а для Java в целом. Исходная модель памяти Java (к которой, в частности, относится «потоколокальная память»), разработанная в 1995 году, считается неудачной: многие оптимизации невозможно провести, не потеряв гарантию безопасности кода. В частности, есть несколько вариантов написать многопоточного «одиночку»: (ru) |
rdfs:label | Java memory model (en) Модель памяти Java (ru) |
owl:sameAs | freebase:Java memory model yago-res:Java memory model wikidata:Java memory model dbpedia-ru:Java memory model https://global.dbpedia.org/id/4oB3w |
prov:wasDerivedFrom | wikipedia-en:Java_memory_model?oldid=1080399544&ns=0 |
foaf:isPrimaryTopicOf | wikipedia-en:Java_memory_model |
is dbo:wikiPageRedirects of | dbr:Java_Memory_Model |
is dbo:wikiPageWikiLink of | dbr:Memory_model_(programming) dbr:Java_Memory_Model dbr:Java_version_history dbr:Java_concurrency |
is foaf:primaryTopic of | wikipedia-en:Java_memory_model |