Java怪異實踐

總覽

Java中有許多實踐使我感到困惑。 這里只是一些。 使用-Xmx和-Xms

選項-Xmx廣泛用于設置最大內存大小。 如Java HotSpot VM Options中所述,以-X開頭的選項是非標準的(不保證在所有VM實現中均受支持),并且在以后的JDK發行版中,如有更改,恕不另行通知。

因此,您會認為這種廣泛使用的選項將不再是非標準的。 實際上,有一個標準選項-mx和類似的-ms。 我不知道為什么這些標準選項沒有得到更廣泛的使用,甚至沒有記載。

僅將NIO用于非阻塞IO

非阻塞IO是用于套接字的NIO的新功能。 但是,NIO套接字的默認行為是阻止。 文件僅在NIO中被阻止。 NIO2提供了一個異步接口,但是通過將您的請求傳遞給ExecutorService來實現(這實際上是在作弊,因為它什么也做不了您已經做不到的事情)

我個人更喜歡阻止NIO。 它僅在二進制連接數較少時才適用,但是按恕我直言,這是一種選擇不多的選項。

使用32位JVM節省內存

使用32位JVM保存的內存量遠遠少于您的想象。 現代64位JVM默認情況下最多使用32位引用,最大堆大小為32 GB。 您不太可能希望擁有更大的堆大小(如果只是為了避免很長的完整GC時間)

與64位JVM相比,32位JVM的對象標頭仍然較小,但是差別很小。 64位JVM可以使用更多,更大的寄存器(在AMD / Intel x64系統上),并且可以使用更大的地址空間,從而減少內存限制。

使用線程使一切更快

使用多個線程可以提高CPU利用率并減少IO延遲的影響。 它不能解決所有性能問題。 它不會使磁盤運行得更快,不會增加網絡帶寬,不會增加L3緩存的大小,不會增加CPU到主內存帶寬的速度,也不會大大提高數據庫的速度。

同樣,使所有內容并發也不會有太大區別。 當您只有8個核心時,是否需要1000個并發集合? 不管您有多少個線程,一次都只能運行8個線程,如果您有1000個集合,則很有可能兩個線程將使用同一集合。

對關鍵資源有選擇地使用并發。 否則,您不僅有增加開銷和降低應用程序速度的風險,而且還帶來引入的復雜性增加的風險。

參考:來自Vanilla Java博客的JCG合作伙伴 Peter Lawrey在Java上的奇怪實踐 。


翻譯自: https://www.javacodegeeks.com/2012/06/odd-practices-in-java.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372233.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372233.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372233.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

saml java實現_java-saml

軟件簡介java-saml 是 Java 的 SAML 開發包。Maven&#xff1a;com.oneloginjava-saml2.4.0示例代碼&#xff1a;Map samlData new HashMap<>();samlData.put("onelogin.saml2.sp.entityid", "http://localhost:8080/java-saml-tookit-jspsample/metadat…

雙系統Ubuntu分區擴容過程記錄

本人電腦上安裝了Win10 Ubuntu 12.04雙系統。前段時間因為在Ubuntu上做項目要安裝一個比較大的軟件&#xff0c;導致Ubuntu根分區的空間不夠了。于是&#xff0c;從硬盤又分出來一部分空間&#xff0c;分給Ubuntu。于是有了這篇Ubuntu擴容過程記錄&#xff0c;也可以當作是一篇…

使用MongoDB的MapReduce

MapReduce是Google在2004年推出的一種軟件框架&#xff0c;用于支持對計算機集群中的大數據集進行分布式計算。 您可以從此處閱讀有關MapReduce的信息 。 MongoDB是用C 編寫的面向開源文檔的NoSQL數據庫系統。 您可以從此處閱讀有關MongoDB的更多信息。 1.安裝MangoDB。 請遵…

java epson指令集_EPSON機械手 SPEL+語言指令集

下面是全部指令的簡明列表&#xff0c;放在這里方便參考。之后重要的指令&#xff0c;勇哥要拿出來單獨學習。系統管理相關命令Reset 將控制器重置為初始狀態。SysConfig 顯示系統設置參數。SysErr 返回最新的錯誤狀態或警告狀態。Date 顯示日期。Time 顯示時間。Date$ 以字符串…

1、關于action中解決跨域請求問題:

&#xff08;1&#xff09;、action中使用ajax傳值時HttpServletRequest request ServletActionContext.getRequest(); String origin request.getHeader("Origin"); HttpServletResponse response ServletActionContext.getResponse(); response.setContentType(…

dom contains 包含關系

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>contains</title></head><body> <div id"p-node"> <div id"c-node">子節點內容&…

ANTLR:入門

這篇文章使您了解ANTLR的基礎知識。 以前&#xff0c;我們已經了解了如何將ANTLR設置為外部工具。 在這里&#xff1a; ANTLR外部工具 :) 所以&#xff0c;我們開始…。 什么是ANTLR&#xff1f; ?另一個語言識別工具&#xff0c;是一種語言工具&#xff0c;它提供了一個框架…

安裝JAVA8要登錄_JDK8的安裝及環境配置

原文鏈接:https://www.cnblogs.com/chenxj/p/10137221.html1、下載JDK&#xff1b;b、或百度網盤&#xff1a;鏈接&#xff1a;https://pan.baidu.com/s/1S14y4_3eN9G6oOVfhmbe_w提取碼&#xff1a;0cf62、雙擊安裝程序&#xff0c;點擊下一步安裝目錄若不修改&#xff0c;可直…

【學習筆記】JavaScript基礎(一)

【學習過程遇到疑問和延伸閱讀】 1.document.write()的深入理解write()方法可向文檔寫入HTML表達式或JavaScript代碼。可使用document.write()向輸出流寫文本或者HTML 延伸閱讀《js中document.write的那點事》http://www.cnblogs.com/dh616854836/articles/2140349.html 2.編程…

js操縱cookie技術

<% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>圖片瀏覽</title> <script typ…

java none怎么用tomcat_使用tomcat做java中間件

tomcat是一個老牌的中間件了&#xff0c;從我從業到現在時不時都會遇到它&#xff0c;方便、靈活、性能一般是我對它的使用經驗總結。配置注意 &#xff1a; tomcat 7 和 6 有很大差別&#xff0c;server.xml catalina.sh 配置文件不能通用設置tomcat7 使用jdk1.7export JAVA_H…

早期訪問中帶有NetBeans的Oracle公共云Java服務

誰期望發生這種情況&#xff1a;Oracle正在開發公共云產品&#xff0c;并且即將開始正式啟動的跡象已經出現。 在正式宣布之后將近一年&#xff0c;我被邀請加入所謂的“搶先體驗”計劃&#xff0c;以試駕新服務并提供反饋。 多虧負責產品的經理Reza Shafii &#xff0c;我才可…

MySQL 分組之后如何統計記錄條數 gourp by 之后的 count()

SELECT count(*) FROM 表名 WHERE 條件 // 這樣查出來的是總記錄條SELECT count(*) FROM 表名 WHERE 條件 GROUP BY id //這樣統計的會是每組的記錄條數.如何獲得 第二個sql語句的總記錄條數? 則是&#xff0c;如下&#xff1a;    select count(*) from(SELECT count(*) F…

python CS游戲1--角色創建,武器購買

#codingutf-8 import random 本文字主要目的是隨機創建一個角色&#xff0c;并且武器是隨機產生的&#xff0c;自帶系統給的費用10000,10000元錢可以購買武器&#xff0c;購買武器以后&#xff0c;錢會減少&#xff0c;直到不足提示無法購買 dir{"AK47":2000,"…

App Engine中的Google Services身份驗證,第2部分

在本教程的第一部分中&#xff0c; 我描述了如何使用OAuth進行Google API服務的訪問/身份驗證。 不幸的是&#xff0c;正如我稍后發現的那樣&#xff0c;我使用的方法是OAuth 1.0&#xff0c;顯然現在Google正式棄用了OAuth 1.0&#xff0c;改用OAuth 2.0版本。 顯然&#xff0…

字符串常用操作

1 常用&#xff1a;分割、長度、索引、切片2 r (1,2,3,4,5)#只讀列表元組3 name "liangml"4 strip5 username input("user:")6 if username.strip() "liangml":#strip可以將輸入前后的空格都換掉7 print("welcome")8 9 split …

java 保存bufferedimage_java - 如何將BufferedImage保存為Fi

答案在于Java Documentation的編寫/保存圖像教程。SaveImage.java類提供以下保存圖像的方法&#xff1a;static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException該教程解釋了這一點BufferedImage類實現RenderedImage接口。所以它…

MarkDownPad2 注冊碼

注冊信息 郵箱地址&#xff1a; Soar360live.com 授權秘鑰&#xff1a;GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVpbP2M5SN6bnxn2kSE8qHqNY5QaaRxmO3YSMHxlv2EYpjdwLcPwfeTG7kUdnhKE0vVy4RidP6Y2wZ0q74f47fzsZo45JE2hfQBFi2O9Jldjp1mW8HUpTtLA2a5/sQytX…

[51nod1297]管理二叉樹

一個初始為空的二叉搜索樹T&#xff0c;以及1到N的一個排列P: {a1, a2, ..., aN}。我們向這個二叉搜索樹T添加這些數&#xff0c;從a1開始, 接下來是 a2, ...&#xff0c; 以aN結束。在每一個添加操作后&#xff0c;輸出T上每對節點之間的距離之和。例如&#xff1a;4 7 3 1 8 …

Java Swing中的聊天氣泡

本文將向您解釋“如何在Java swing應用程序中繪制聊天氣泡&#xff1f;” 聊天氣泡與呼出氣泡或思想氣泡相同。 今天&#xff0c;大多數聊天應用程序都以這種格式顯示轉換&#xff0c;因此本文將幫助您在用Java swing創建的桌面應用程序中進行相同的操作。 以下課程用于繪制第一…