日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

實時JAVA簡介

瀏覽:219日期:2024-06-06 10:47:40
內容: 我在一家投資銀行工作了許多年 , 我的經驗告訴我,在金融軟件中出現的絕大多數問題是由于缺少實時支持導致的。許多大型的金融IT系統工作于JAVA平臺,程序運行時一個不在計劃中的的兩秒的垃圾收集將導致成千上萬美元的損失。更糟糕的是,垃圾收集通常發生在程序負載很高的情況下,這時候程序對執行過程中的中斷更為敏感。同樣的情況也發生在其他高科技產業中,這就是為什么需要仔細研究實時JAVA規范及其實現的原因。有些人可能會認為JAVA和實時是不同環境中的兩個概念,實際上,最老的JSR之一(確切的說是第一個JSR)就是關于擴展JAVA平臺的實時特性的。然而,任務提交的順序并不保證它的實現的順序;Sun只是在最近才實現了實時性,但這并不意味著它是一個低優先級的特性;實際上,這是一個非常復雜并且是一個完整的工作。但是實時的要求與JAVA的本身的要求兼容嗎?有很多問題就不得不提了,如GC的語義學 ,同步,線程調度以及high-resolution的時間管理。在本文中,我們將逐一解釋這些名詞。版權聲明:任何獲得Matrix授權的網站,轉載時請務必保留以下作者信息和鏈接作者:michaelzyy;michaelzyy原文:http://www.matrix.org.cn/resource/article/2006-11-28/JAVA+Real+Time_72f1a994-7e38-11db-babc-9753a314dd4b.html關鍵字:Java;Real time實時是什么意思呢?Greg Bollella ,是Sun公司的一個杰出的工程師,實時JAVA規范的作者之一,它說,實時意味著“能夠可靠的可預測的推測和控制程序邏輯的時間行為的能力。實時并不像許多開發者想的那樣,意味著速度,而是意味著當需要對現實世界的事件作出反應時,它的行為是可預測的和可靠的。實時的電腦總是在限定的期限之內作出反應。取決與所設定的的期限,大量的系統可以被稱作是實時的。很多程序不能允許即使是一秒的延遲;他們包括之前提到的金融軟件,飛機控制軟件,核電站控制軟件等等。所以,這些并不完全是對速度要求很高的,盡管實時平臺的設計師會努力使得程序變快。顯而易見,標準的JAVA平臺并不符合這些實時系統的要求,這也寫入了J2SE和J2EE的許可證協議中,這些協議明確的聲明JAVA不能用于核電站設施軟件和防衛系統等等。實時JAVA開發實時應用程序需要一個能夠允許開發者正確的控制程序的運行時間以及程序在現實中的行為PI集合和語義。因此JAVA的實時版本必須提供一些JVM的增強以及一個適合實時程序的API集合。毫不奇怪,在JAVA中添加實時的特性最大的障礙在于它的垃圾收集器。Sun最近發布的JAVA實時版本RTS1.0中就包含了一個革命性的核心的實時的垃圾收集器。盡管它的第一個實現中并沒有包含這樣一個垃圾收集器(將在下一個release版本中將增加)。JAVA RTS 提出了其他一些問題,保證線程調度的確定性,overhead同步,鎖排隊管理,類初始化以及最少的中斷反應延遲。JAVA RTS僅僅針對于合適的操作系統,這就意味著只有諸如QNX這樣的的實時操作系統才適合去實現一個這樣的JVM。實時JAVA規范的第一個官方商業實現版本是在Solaris 10,工作在UltraSparc硬件上,并且要求J2SE 1.4.2作為基礎。未來的版本將會支持JAVA 5 以及其他的一些平臺。美國海軍,Raytheon公司和波音公司已經開始使用SUN的JAVA實時系統。當然,SUN的JAVA實時系統并不是第一個實時JAVA的實現。一些嵌入式系統的廠商已經在他們的系統中實現了一些實時的特性,不過他們的實現只是涵蓋了一些具體的需要,并不符合JSR-1規范的要求。這對于那些使用JAVA平臺并需要實時JVM的開發人員來說是個好消息。這些聽起來都不錯,可是從一個開發人員的角度來看,這又意味著什么呢?要改變現有的程序使其使用RTS的API需要些什么改變呢?我們可以擺脫垃圾收集導致的中斷這樣一個主要的問題嗎?很不幸,所有的一切并不是那么簡單。僅僅簡單的安裝一個RTS的擴展包,把java.lang.Thread實例改名交javax.realtime.RealtimeThread并不能把一個程序變成一個實時的應用程序。不過,這仍然是一個很好的開端,至少你可以獲得一個革命性的實時的垃圾收集器。不得不提的是現有的J2SE的程序將可以成功的在JAVA 實時系統下運行 因為RTSJ規范只是JAVA語言規范和JAVA虛擬機規范的一個子集。它并不允許那些可能會破壞現有程序的語義擴展。為了使得實時的垃圾收集器可預測,程序員必須了解它的程序是如何從堆中要求內存的,因為垃圾收集器和程序都要用到它。程序產生垃圾,然后垃圾收集器將垃圾清理成空閑的內存,它們需要在堆中進行。因此,你必須告訴垃圾收集器關于你的程序產生垃圾的速度等一些信息,這樣它可以明白自己需要多快的進行垃圾收集。如何獲取那些數字可能是有點tricky,但是不管你做什么,你必須得考慮內存的使用。如果運行RealtimeThread不是足夠的,在修改完大罵之后,垃圾收集器的停頓將仍然很長或者無法預測。你可能需要使用一個execution context而不是RealtimeThread,例如javax.realtime.NoHeapRealtimeThread.它可以通過使用內存而不是JAVA堆來獲得可預測的特性,例如immortal memory 和 scoped memory,后面我們將討論他們。獲得可預測性當然需要代價的:典型的情況是犧牲了系統的平均性能。JAVA RTS的新特性讓我們來看一下JAVA RTS平臺中增加了哪些新特性。 *直接內存存取.JAVA RTS 允許對物理內存的直接存取,這與J2ME很像。不要驚奇,JAVA實時系統主要針對的平臺就是嵌入式系統。這就意味著現在你可以創建用純JAVA寫的設備驅動了。盡管內存存取并不是一個實時系統的直接要求,許多應用程序還是需要對物理內存做存取。JAVA RST定義了一個新的類,這個類允許程序員對物理內存做字節級別的存取,同時這個類還允許在物理內存中創建對象。有人可能會認為JAVA支持物理內存存取就是放棄了原有的主要的原則-可靠性和安全性,并向C語言又靠近了一步。但這并不是問題的所在,JAVA通過控制內存邊界和數據內容來實現了一個強大的安全保護措施。 *異步交流。JAVA RTS 提供了兩種異步交流的形式:異步事件處理和異步傳輸控制。異步事件處理意味這開發者可以計劃對來自JVM外部的事件的反應。異步傳輸控制為一個線程提供了安全的中斷另一個線程的方法。 *High-resolution timing.有很多詳細描述High-resolution timing的方法,包括絕對時間和相對時間。時間的調度和度量能夠具有一個納秒級準確度。 *內存管理。有兩種新的內存區域可以幫助防止由于在實時應用程序中傳統的垃圾回收導致的無法預期的延遲。Immortal memory 和 scoped memory。Immortal memory保存對象而不摧毀他們,直到程序結束。這就意味著在Immortal memory中創建的對象必須像C 程序那樣仔細的分配和管理。scoped memory僅僅被用于當一個進程在一個特定的范圍里工作的情形。當這個進程離開這個范圍的時候,對象將自動被摧毀。Immortal memory和scoped memory都不會被垃圾收集的,因此可以通過使用它們來避免垃圾收集的影響。JAVA RTS也為使用內存區域的線程提供了內存分配預算的功能的有限支持。當線程被創建的時候,每個實時線程的最大內存區域消費和最大的分配率可以是指定的。 *實時線程。正如先前所提到的,JAVA RT支持兩種新的線程模型:實時線程(javax.realtime.RealtimeThread) 和非堆實時線程(javax.realtime.NoHeapRealtimeThread).這兩種線程類型都是不能被垃圾收集中斷的。這些線程具有28個級別的優先級,并且和標準的JAVA不同,他們的優先級是嚴格的增強的。實時線程是同步的,并且并不受限于所謂的優先級顛倒(priority inversion),在這種priority inversion情況下,如果一個低優先級的線程擁有一個高優先級的線程所需要的資源,將會阻止了這個高優先級的線程的運行。測試證明JAVA RTS完全避免了priority inversion,這對于緊急任務來說是很重要的。 它是如何工作的讓我們先簡短的了解程序員可以多么輕易的利用這些實時JAVA的新特性的。我們將只考慮新的API中的最有趣的部分:線程和內存。對于其他問題,請參閱real-time JAVA specification 文檔(PDF).規范的制訂者們一個主要的目標就是保證RTS編程的簡單性,盡管實時問題是很復雜的;這就意味著操作系統必須盡可能多的完成一些工作,使得程序員只需要完成實時程序設計這個具有挑戰性的工作。線程RealtimeThread 類繼承了java.lang.Thread類。這個類有多個構造函數,開發者能夠調試線程的行為。public RealtimeThread()public RealtimeThread(SchedulingParameters scheduling)public RealtimeThread(SchedulingParameters scheduling, ReleaseParameters release)提供給RealtimeThread(還有MemoryParameters )的構造函數的兩個參數ReleaseParameters 和SchedulingParameters使得線程的時間和處理器需求可以通知給系統。RealtimeThread實現了Schedulable接口。關鍵就在于Schedulable對象可以被放置在ImmortalMemory, HeapMemory, ScopedPhysicalMemory, and PhysicalImmortal等類的實例所表示的內存中。NoHeapRealtimeThread 是RealtimeThread的一個特有的形式。因為NoHeapRealtimeThread實例可以立刻搶占任何已實現的垃圾收集器,它的run()函數中的邏輯不允許分配或引用任何在堆中分配的對象,或者是對在堆中的對象進行操作。例如,如果A和B是immortal memory中的兩個對象。B.p是堆中的一個對象的引用 , A.p和B.p的類型是一致的,那么NoHeapRealtimeThread是不允許執行與下面類似的代碼的:A.p = B.p;B.p = null;考慮到這些限制,NoHeapRealtimeThread對象必須被放置在一個內存區域中以防止線程可能unexceptionally的控制實例的變量。這就是為什么NoHeapRealtimeThread的構造函數要求ScopedMemory 或 ImmortalMemory的引用了。當線程啟動后,所有的操作都處于分配的內存區域中。因此,new操作產生的所有的內存分配都處于這個區域中。內存管理我們已經發現了一些內存相關的類了。更確切的說,MemoryArea 是所有處理可分配的內存區域的類的抽象的基類,這些內存區域包括ImmortalMemory,物理內存和ScopedMemory。HeapMemory類是一個單體(singleton)對象,它允許其他內存區域中的代碼在JAVA堆中分配內存。這個方法返回一個對HeapMemory單體實例所代表的JAVA堆的指針。public static HeapMemory instance() 更有意思的是ImmortalMemory類,這是一個所有線程都共享的內存資源。在ImmortalMemory中分配的對象一直會存活到程序結束的時候,并且絕不會被垃圾收集掉,盡管一些垃圾收集算法可能會要求掃描Immortal MemoryScopedMemory區域連接到特定內存區域,這是一個處理那些指向具有有限生命周期的內存空間的類RawMemoryAccess實例把一段范圍的物理內存當作一個固定順序的字節。Accessor方法的完整實現將允許通過偏移量來訪問物理地址的內容,把它解析成byte,short,int或long數據或者這些類型的數組。如果你需要訪問float或是double類型的值,就必須使用RawMemoryFloatAccess類。偏移量是代表high-order 還是 low-order字節取決于RealtimeSystem類中的靜態布爾變量BYTE_ORDER的值。一個raw的內存空間當然不能夠存儲JAVA對象的引用,因為這樣一種操作是不安全的。RawMemoryAccess類用下面的構造函數來初始化:public RawMemoryAccess(JAVA.lang.Object type,long base, long size) throws SecurityException, OffsetOutOfBoundsException, SizeOutOfBoundsException, UnsupportedPhysicalMemoryException, MemoryTypeConflictException, MemoryInUseException值得注意的是這個構造函數定義了相當多的可能拋出的異常。Type參數是代表所需內存類型的對象所需要的。它被用于定義初始地址以及控制映射。結論實時JAVA提供了一個更可靠和可預測的調度機制,內存處理方法,各種不同的內存模型,一個可預測性更好的線程和同步模型,異步時間處理,以及high-resolution時間處理。這使得可預測的運行成為傳統的計算性能測試中所有決定中的第一選擇。這就是實時的真諦。這篇文章只是一個新的概念和Sun的JAVA實現的的綜述。如果你對具體的實現細節很感興趣,你可以在下面的資源中找到很多有用的資料。實時JAVA為JAVA應用程序提供了實時能力,這也使得JAVA有可能成為第一個可用的商業的實時語言。資源 * Real-Time JAVA Platform Programming, by Peter C. Dibble * Real-Time Specification for JAVA (PDF) * Sun J2SE Real-Time EditionPeter Mikhalenko是Deutsche Bank的一個商務顧問。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd 我在一家投資銀行工作了許多年 , 我的經驗告訴我,在金融軟件中出現的絕大多數問題是由于缺少實時支持導致的。許多大型的金融IT系統工作于JAVA平臺,程序運行時一個不在計劃中的的兩秒的垃圾收集將導致成千上萬美元的損失。更糟糕的是,垃圾收集通常發生在程序負載很高的情況下,這時候程序對執行過程中的中斷更為敏感。同樣的情況?
標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久在线电影| 国产91一区| 91精品久久久久久久久久不卡| 91成人精品观看| 青青伊人久久| 美女精品视频在线| 成人在线观看免费视频| 国产成年精品| 久久久噜噜噜| 在线观看亚洲精品福利片| 亚洲精品高潮| 国产极品嫩模在线观看91精品| 国产精品v日韩精品v欧美精品网站| 国产精品久久国产愉拍| 国产成人调教视频在线观看| 日韩一区亚洲二区| 欧美精品一区二区久久| 国产尤物精品| 国产亚洲精aa在线看 | 日韩精品一卡二卡三卡四卡无卡| 石原莉奈在线亚洲三区| 四虎精品永久免费| 国产成人精品福利| 免费视频久久| 91日韩在线| 亚洲精品裸体| 久久91导航| 国产精品任我爽爆在线播放| 日韩精品免费一区二区三区| 亚洲精选成人| 欧美a一区二区| 在线国产一区二区| 欧美a在线观看| 免费在线观看一区二区三区| 国语精品一区| 日韩欧美久久| 欧美成人综合| 精品午夜视频| 日韩一区二区三区精品视频第3页| 福利一区二区| 国产精品天堂蜜av在线播放| 99xxxx成人网| 免费av一区| 久久久久久久久久久9不雅视频| 国产亚洲高清在线观看| 天堂成人免费av电影一区| 国产劲爆久久| 免费一级欧美在线观看视频 | 亚洲有吗中文字幕| 夜夜嗨av一区二区三区网站四季av| 欧美激情麻豆| 国产福利资源一区| 欧美日本久久| 中文字幕av亚洲精品一部二部| 蜜桃成人av| 欧美日韩日本国产亚洲在线| 日韩欧美一区二区三区免费看| 久久精品国产99| 久久亚洲精品中文字幕| 日韩av中文字幕一区二区三区| 视频一区在线播放| 丝瓜av网站精品一区二区| 国产亚洲精品v| 亚洲日本国产| 欧美日韩1区2区3区| 欧美性www| 精品国产亚洲一区二区三区| 欧美日韩国产观看视频| 国产理论在线| 亚洲高清二区| 亚洲日韩视频| 老司机免费视频一区二区| 精品亚洲精品| 欧美精选一区二区三区| 亚洲高清二区| 国产欧美日韩一级| 伊人久久视频| 综合亚洲自拍| 久久亚洲资源中文字| 亚洲第一精品影视| 日本成人在线视频网站| 欧美激情91| 99视频精品免费观看| 国产精品亚洲综合久久| 日韩欧美一区免费| 日韩精品一区二区三区中文字幕| 国产精品中文字幕制服诱惑| 神马久久午夜| 欧美一区自拍| 在线天堂中文资源最新版| 国产亚洲毛片在线| 国产suv精品一区二区四区视频 | 国产亚洲高清一区| 播放一区二区| 日韩精品1区2区3区| 久久精品午夜| 日韩一二三区在线观看| 欧美片第1页| 视频在线观看91| xxxxx性欧美特大| 国产亚洲精品精品国产亚洲综合| 欧美日韩国产传媒| 久久不卡日韩美女| 蜜臀av在线播放一区二区三区| 久久的色偷偷| 日韩激情网站| 久久一区二区中文字幕| 久久精品xxxxx| 一区二区不卡| 亚洲女同一区| 91精品在线观看国产| 精品网站999| 国产精品久一| 一区二区亚洲视频| 成人av动漫在线观看| 九九久久国产| 久久精品国产亚洲一区二区三区| 亚洲精品美女91| 视频精品一区二区| 亚洲在线免费| 亚洲欧美日韩国产一区| 欧美性感美女一区二区| 中文字幕在线视频久| 你懂的国产精品| 国产日韩一区| 欧美亚洲三区| 国产乱码精品一区二区亚洲| 欧美亚洲二区| 国产伦精品一区二区三区千人斩| 免费精品视频在线| 日韩激情网站| 美女精品久久| 日韩电影免费网址| 久久国产亚洲| 一区在线免费| 最近国产精品视频| 视频一区日韩精品| 国产精品久久久久久久久久白浆 | 欧美高清一区| 羞羞答答国产精品www一本| 亚洲免费一区二区| 亚洲精品在线二区| 国产伦理久久久久久妇女| 国产在线一区不卡| 精品久久在线| 欧美日韩尤物久久| 国产色99精品9i| 国产一区不卡| 亚洲一区国产一区| 国产高清精品二区| 欧美日韩在线网站| 在线看片一区| 欧美日韩黄网站| 亚洲精品观看| 免费在线亚洲欧美| 亚洲日本网址| 中文无码日韩欧| 精品美女视频 | 日韩国产一区| 亚欧成人精品| 久久一区二区三区喷水| 日韩激情视频网站| 亚洲综合在线电影| 日韩福利视频导航| 日韩精品影视| 国产精品极品在线观看| 国产成人久久| 日韩欧美美女在线观看| 成人美女视频| 日韩 欧美一区二区三区| 日韩在线高清| 久久av网站| 日韩免费精品| 妖精视频成人观看www| 亚洲欧洲美洲av| 久久的色偷偷| 日韩av黄色在线| 免费久久99精品国产自在现线| 国产网站在线| 精品一区视频| 欧美国产不卡| 亚洲乱亚洲高清| 久久av一区| 丝袜亚洲精品中文字幕一区| 激情婷婷久久| 欧美/亚洲一区| 久久黄色影院| 99成人超碰| 蜜臀av免费一区二区三区| 日韩高清不卡| 丝袜av一区| 国产一在线精品一区在线观看| 伊人精品一区| 一本色道精品久久一区二区三区| 免费久久精品| 免费在线观看视频一区| 夜夜嗨一区二区| 亚洲精品大片| 国产经典一区| 成人欧美一区二区三区的电影|