java实践_Java怪异实践
java實踐
總覽Java中有許多實踐使我感到困惑。 這里只是一些。 使用-Xmx和-Xms
選項-Xmx廣泛用于設(shè)置最大內(nèi)存大小。 如Java HotSpot VM Options中所述,以-X開頭的選項是非標準的(不保證所有VM實施都支持該選項),并且在以后的JDK發(fā)行版中,如有更改,恕不另行通知。
因此,您會認為這種廣泛使用的選項將不再是非標準的。 實際上,有一個標準選項-mx和類似的-ms。 我不知道為什么這些標準選項沒有得到更廣泛的使用,甚至沒有記載。
僅將NIO用于非阻塞IO
非阻塞IO是用于套接字的NIO的新功能。 但是,NIO套接字的默認行為是阻止。 文件僅在NIO中被阻止。 NIO2提供了一個異步接口,但是通過將您的請求傳遞給ExecutorService來實現(xiàn)(這實際上是在作弊,因為它什么也做不了您無法做的事情)
我個人更喜歡阻止NIO。 它僅在二進制連接數(shù)較少時才適用,但是按恕我直言,這是一個選項,無法獲得足夠的效果。
使用32位JVM節(jié)省內(nèi)存
使用32位JVM保存的內(nèi)存量遠遠少于您的想象。 現(xiàn)代64位JVM默認情況下最多使用32位引用,最大堆大小為32 GB。 您不太可能希望擁有更大的堆大小(如果只是為了避免很長的完整GC時間)
與64位JVM相比,32位JVM的對象標頭仍然較小,但是差別很小。 64位JVM可以使用更多,更大的寄存器(在AMD / Intel x64系統(tǒng)上),并且可以使用更大的地址空間,從而減少內(nèi)存限制。
使用線程使一切更快
使用多個線程可以提高CPU利用率,并減少IO延遲的影響。 它不能解決所有性能問題。 它不會使磁盤運行得更快,不會增加網(wǎng)絡(luò)帶寬,不會增加L3緩存的大小,不會增加CPU到主內(nèi)存的帶寬或使數(shù)據(jù)庫顯著更快的速度。
同樣,使所有內(nèi)容并發(fā)也不會有太大區(qū)別。 當您只有8個核心時,是否需要1000個并發(fā)集合? 不管您有多少個線程,一次都只能運行8個線程,如果您有1000個集合,則很有可能兩個線程將使用同一集合。
對關(guān)鍵資源有選擇地使用并發(fā)。 否則,您不僅有增加開銷和降低應(yīng)用程序速度的風(fēng)險,而且還帶來引入的復(fù)雜性增加得多的風(fēng)險。
參考:來自Vanilla Java博客的JCG合作伙伴 Peter Lawrey在Java上的奇怪實踐 。
翻譯自: https://www.javacodegeeks.com/2012/06/odd-practices-in-java.html
java實踐
總結(jié)
以上是生活随笔為你收集整理的java实践_Java怪异实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ddos攻击肉鸡怎么找(ddos怎么找到
- 下一篇: (ab)使用Java 8 Functio