Autotrac 3-Java

再討論 AutoTrac 3 出咗乜事

有人指行 AutoTrac 3 電子紙條部Server得4GB後,由於呢件事太膠,特別現代OS加JVM要打爆你個RAM都好容易,RAM又唔係十分之貴,所以當然機管局被鬧爆,跟住民航處話AutoTrac 3果部Server有16GB,行64位元OS。咁問題嚟,點解仍然會 2.5GB RAM 食咗後就打爆機先?

作業系統係64位元, Autotrac 3 呢?

其實 64位元唔係十分之先進,呢個已經係業界標準,由iPhone 6起,Apple都陸續將iOS 64位元化,我相信遲早一部手機都4GB RAM兼行64位元作業系統,我唔相信AutoTrac 3嘅主機會膠到得4GB RAM。問題係, AutoTrac 3 行電子紙條部分程式有無64位元化。如果你個Java程式,因硬件驅動程式問題,要黐住一堆32位元classes,你始終係行緊32位元嘅Virtual Machine同bytecode,你個memory limit就仍然會跟32位元嘅規矩,呢個係無得講,所以民航處不如交代一下,你個垃圾program用嘅classes同JVM係唔係64位元先,我懷疑未必係。

而 Oracle 喺對JVM memory heap問題上,可以俾到啲線索大家

The maximum theoretical heap limit for the 32-bit JVM is 4G. Due to various additional constraints such as available swap, kernel address space usage, memory fragmentation, and VM overhead, in practice the limit can be much lower. On most modern 32-bit Windows systems the maximum heap size will range from 1.4G to 1.6G. On 32-bit Solaris kernels the address space is limited to 2G. On 64-bit operating systems running the 32-bit VM, the max heap size can be higher, approaching 4G on many Solaris systems.

所以 2.5GB Memory heap limit,好大機會係 64-bit OS (Linux或Solaris) + 32-bit JVM嘅結果嚟。

如果個JVM同classes都係用64位元,又係16GB RAM,咁點解2.5GB要reboot一次,好明顯係memory management有問題,一係就寫啲memory leak嚴重嘅狗屎垃圾,一係成個設計根本係瘋狂,一係仲有其他問題,我們係根本唔知嘅。咁不如民航處查啲民間專家睇睇個code同設計發生咗乜事好過喇。

當然,我對Java嘅偏見,唔好同我爭論,或者郁唔郁話我無知,你熱愛Java你嘅事,但連Oracle都唔知點處理Java前途,蘋果一早對Java採取一個「不友善」態度果陣,我一向相信Steve Jobs對鑊氣嘅觸覺。當然,以 AutoTrac 3 嘅設計咁垃圾,用C/C++會慘死,我無異議,寫AutoTrac 3呢班友究竟讀programming果陣,點學memory management,同埋點解民航處點解收貨,我十分之想知。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *