Кіріспе
Jupiter JVM – бұл модульділік және кеңейтімділік принципінде жасалған, магистрлік диссертация ретінде әзірленген ашық бастап кодты Java виртуалды машинасы. Ол Boehm қоқыс жинаушысын және GNU Classpath-ты пайдаланады. Юпитер виртуалды машинасының дизайнының негізгі аспектілерін былай қарастыруға болады:
Memory locality Objects are allocated on the heap with little or no consideration for locality. While this approach may be appropriate for uniprocessors or small scale SMPs, it is unlikely to work well on a cluster of workstations where remote memory access is one or two orders of magnitude slower than local memory access. Parallel garbage collection Garbage collection can consume a considerable amount of application time. Typically, JVMs employ "stop the world" garbage collectors, where program threads are halted during garbage collection. This approach will not work for large numbers of processors, for two reasons. First, the cost of "stopping the world" is considerably higher when the number of processors is large. Second, using a single thread to collect garbage results in an unacceptably large sequential fraction for any application. Memory consistency model To achieve scaling performance on many processors, it is important to exploit the "relaxed" Java Memory Model. Presently no JVM implements the JMM faithfully, and indeed many implement it incorrectly, leading to lack of coherence and loss of optimization opportunities. The specification of the JMM was also revised in 2007. Efficient threads and synchronization With many processors, it is critical to provide efficient threading support and synchronization mechanisms that scale well.
Жад локалдығы – Объектілер жадқа орналастырылғанда локалдылық ескерілмейді немесе аз ескеріледі. Бұл тәсіл унипроцессорлар немесе кішкентай SMP жүйелері үшін қолайлы болғанымен, жұмыс станцияларының кластерінде тиімді болмайды, себебі онда қашық жадқа қол жеткізу жергілікті жадқа қол жеткізуден бір немесе екі есе баяу.
Memory locality Objects are allocated on the heap with little or no consideration for locality. While this approach may be appropriate for uniprocessors or small scale SMPs, it is unlikely to work well on a cluster of workstations where remote memory access is one or two orders of magnitude slower than local memory access. Parallel garbage collection Garbage collection can consume a considerable amount of application time. Typically, JVMs employ "stop the world" garbage collectors, where program threads are halted during garbage collection. This approach will not work for large numbers of processors, for two reasons. First, the cost of "stopping the world" is considerably higher when the number of processors is large. Second, using a single thread to collect garbage results in an unacceptably large sequential fraction for any application. Memory consistency model To achieve scaling performance on many processors, it is important to exploit the "relaxed" Java Memory Model. Presently no JVM implements the JMM faithfully, and indeed many implement it incorrectly, leading to lack of coherence and loss of optimization opportunities. The specification of the JMM was also revised in 2007. Efficient threads and synchronization With many processors, it is critical to provide efficient threading support and synchronization mechanisms that scale well.
Параллель қоқыс жинау – Қоқыс жинау бағдарламаның жұмыс уақытының көп бөлігін алады. Көбінесе JVM-дер «дүние тоқтату» (stop-the-world) қоқыс жинаушыларын қолданады, онда қоқыс жинау кезінде бағдарламалық жіптер тоқтатылады. Бұл тәсіл көп процессорлы жүйелерде екі себептен жұмыс істемейді. Біріншіден, процессорлардың саны артқан сайын «дүние тоқтату» операциясының құны артады. Екіншіден, қоқысты жинау үшін бір жіпті пайдалану кез келген бағдарлама үшін қабылдауға болмайтын үлкен тізбекті бөлікті тудырады.
Memory locality Objects are allocated on the heap with little or no consideration for locality. While this approach may be appropriate for uniprocessors or small scale SMPs, it is unlikely to work well on a cluster of workstations where remote memory access is one or two orders of magnitude slower than local memory access. Parallel garbage collection Garbage collection can consume a considerable amount of application time. Typically, JVMs employ "stop the world" garbage collectors, where program threads are halted during garbage collection. This approach will not work for large numbers of processors, for two reasons. First, the cost of "stopping the world" is considerably higher when the number of processors is large. Second, using a single thread to collect garbage results in an unacceptably large sequential fraction for any application. Memory consistency model To achieve scaling performance on many processors, it is important to exploit the "relaxed" Java Memory Model. Presently no JVM implements the JMM faithfully, and indeed many implement it incorrectly, leading to lack of coherence and loss of optimization opportunities. The specification of the JMM was also revised in 2007. Efficient threads and synchronization With many processors, it is critical to provide efficient threading support and synchronization mechanisms that scale well.
Жад тұрақтылығы моделі – Көп процессорлы жүйелерде жоғары өнімділікке қол жеткізу үшін «бос» Java жад моделін пайдалану маңызды. Қазіргі таңдағы JVM-дердің ешқайсысы JMM-ді толыққанды іске асырмайды, ал көптегендері оны дұрыс емес іске асырады, бұл жадтың үйлесімсіздігіне және оңтайландыру мүмкіндіктерін жоғалтуға әкеледі. JMM-нің спецификациясы 2007 жылы қайта қарастырылды.
Memory locality Objects are allocated on the heap with little or no consideration for locality. While this approach may be appropriate for uniprocessors or small scale SMPs, it is unlikely to work well on a cluster of workstations where remote memory access is one or two orders of magnitude slower than local memory access. Parallel garbage collection Garbage collection can consume a considerable amount of application time. Typically, JVMs employ "stop the world" garbage collectors, where program threads are halted during garbage collection. This approach will not work for large numbers of processors, for two reasons. First, the cost of "stopping the world" is considerably higher when the number of processors is large. Second, using a single thread to collect garbage results in an unacceptably large sequential fraction for any application. Memory consistency model To achieve scaling performance on many processors, it is important to exploit the "relaxed" Java Memory Model. Presently no JVM implements the JMM faithfully, and indeed many implement it incorrectly, leading to lack of coherence and loss of optimization opportunities. The specification of the JMM was also revised in 2007. Efficient threads and synchronization With many processors, it is critical to provide efficient threading support and synchronization mechanisms that scale well.
Тиімді жіптер және синхрондау – Көп процессорлы жүйелерде тиімді жіптік қолдау және жақсы масштабталатын синхрондау механизмдерін қамтамасыз ету өте маңызды.
Memory locality Objects are allocated on the heap with little or no consideration for locality. While this approach may be appropriate for uniprocessors or small scale SMPs, it is unlikely to work well on a cluster of workstations where remote memory access is one or two orders of magnitude slower than local memory access. Parallel garbage collection Garbage collection can consume a considerable amount of application time. Typically, JVMs employ "stop the world" garbage collectors, where program threads are halted during garbage collection. This approach will not work for large numbers of processors, for two reasons. First, the cost of "stopping the world" is considerably higher when the number of processors is large. Second, using a single thread to collect garbage results in an unacceptably large sequential fraction for any application. Memory consistency model To achieve scaling performance on many processors, it is important to exploit the "relaxed" Java Memory Model. Presently no JVM implements the JMM faithfully, and indeed many implement it incorrectly, leading to lack of coherence and loss of optimization opportunities. The specification of the JMM was also revised in 2007. Efficient threads and synchronization With many processors, it is critical to provide efficient threading support and synchronization mechanisms that scale well.