Java效能優化的5個技巧

chszs發表於2017-06-06
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/72887387

Java效能優化的5個技巧

  • 版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。

要優化Java程式碼需要正確的分析它的工作機制,影響效能優化有幾個因素,比如垃圾收集、作業系統的設定、虛擬機器的設定等。

1. 從最小堆分配開始

推薦從最小堆分配開始。然後根據應用程式的實際需要來逐漸增加最小堆,可以通過下面的指令來指示JVM在發生OutOfMemoryError異常時傾倒堆資料:

-XX:+HeapDumpOnOutOfMemoryError

對可用記憶體的適當利用是優化應用速度的好辦法。

一開始時,堆尺寸保持在1GB~7GB之間就足以了。然後取決於老一代和新生代物件的比例進行調整。

2. 使用Java效能工具

業界有幾個Java效能工具,比如VisualVM、YourKit、Java Mission Control等,可用於跟蹤應用程式的效能。

NetBeans開發工具的Profiler也是一個很好的選擇。

3. 使用StringBuilder代替“+”操作符

對於字串的操作,其中如果用到了“+”操作符,那麼應該改用StringBuilder代替。比如上面的程式碼。

這樣使得字串值修改更容易,而且不會對垃圾收集器GC造成額外的壓力。

StringBuilder x = new StringBuilder("a");
x.append(args.length);
x.append("b");
if (args.length == 1);
x.append(args[0]);

4. 避免使用迭代器

如果程式碼像這樣:

for (String value: strings) {
 // Do something useful here
}

那麼在每次執行這個程式碼時,都會建立一個新的迭代器例項,而這會消耗大量的記憶體。

故建議使用下面的程式碼:

int size = strings.size();
for (int i = 0; i < size; i++) {
 String value: strings.get(i);
 // Do something useful here
}

如果實際的列表物件不需要真正發生改變,那麼還可以在其陣列版本上操作,比如:

for (String value: stringArray) {
 // Do something useful here
}

編寫基於索引的迭代非常有用。

5. 具有更好的並行控制

並行是把多個應用程式以彼此並行的方式執行。為了解決多請求的Web流,推薦使用帶樂觀鎖的分離實體或擴充套件的持久上下文。

此外,瞭解關聯式資料庫管理系統RDBMS和資料訪問框架的內部機制對提高資料訪問層的效能至關重要。


相關文章