成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JVM調優總結:反思

開發 后端
Java的垃圾回收確實帶來了很多好處,為開發帶來了便利。但是在一些高性能、高并發的情況下,垃圾回收確成為了制約Java應用的瓶頸。

垃圾回收的悖論

所謂“成也蕭何敗蕭何”。Java的垃圾回收確實帶來了很多好處,為開發帶來了便利。但是在一些高性能、高并發的情況下,垃圾回收確成為了制約Java應用的瓶頸。目前JDK的垃圾回收算法,始終無法解決垃圾回收時的暫停問題,因為這個暫停嚴重影響了程序的相應時間,造成擁塞或堆積。這也是后續JDK增加G1算法的一個重要原因。

當然,上面是從技術角度出發解決垃圾回收帶來的問題,但是從系統設計方面我們就需要問一下了:

我們需要分配如此大的內存空間給應用嗎?
我們是否能夠通過有效使用內存而不是通過擴大內存的方式來設計我們的系統呢? 

我們的內存中都放了什么

內存中需要放什么呢?個人認為,內存中需要放的是你的應用需要在不久的將來再次用到到的東西。想想看,如果你在將來不用這些東西,何必放內存呢?放文件、數據庫不是更好?這些東西一般包括:

1. 系統運行時業務相關的數據。比如web應用中的session、即時消息的session等。這些數據一般在一個用戶訪問周期或者一個使用過程中都需要存在。 
2. 緩存。緩存就比較多了,你所要快速訪問的都可以放這里面。其實上面的業務數據也可以理解為一種緩存。 
3. 線程。

因此,我們是不是可以這么認為,如果我們不把業務數據和緩存放在JVM中,或者把他們獨立出來,那么Java應用使用時所需的內存將會大大減少,同時垃圾回收時間也會相應減少。

我認為這是可能的。

解決之道

數據庫、文件系統

把所有數據都放入數據庫或者文件系統,這是一種最為簡單的方式。在這種方式下,Java應用的內存基本上等于處理一次峰值并發請求所需的內存。數據的獲取都在每次請求時從數據庫和文件系統中獲取。也可以理解為,一次業務訪問以后,所有對象都可以進行回收了。

這是一種內存使用最有效的方式,但是從應用角度來說,這種方式很低效。

內存-硬盤映射

上面的問題是因為我們使用了文件系統帶來了低效。但是如果我們不是讀寫硬盤,而是寫內存的話效率將會提高很多。

數據庫和文件系統都是實實在在進行了持久化,但是當我們并不需要這樣持久化的時候,我們可以做一些變通——把內存當硬盤使。

內存-硬盤映射很好很強大,既用了緩存又對Java應用的內存使用又沒有影響。Java應用還是Java應用,他只知道讀寫的還是文件,但是實際上是內存。

這種方式兼得的Java應用與緩存兩方面的好處。memcached的廣泛使用也正是這一類的代表。

同一機器部署多個JVM

這也是一種很好的方式,可以分為縱拆和橫拆。縱拆可以理解為把Java應用劃分為不同模塊,各個模塊使用一個獨立的Java進程。而橫拆則是同樣功能的應用部署多個JVM。

通過部署多個JVM,可以把每個JVM的內存控制一個垃圾回收可以忍受的范圍內即可。但是這相當于進行了分布式的處理,其額外帶來的復雜性也是需要評估的。另外,也有支持分布式的這種JVM可以考慮,不要要錢哦:)

程序控制的對象生命周期

這種方式是理想當中的方式,目前的虛擬機還沒有,純屬假設。即:考慮由編程方式配置哪些對象在垃圾收集過程中可以直接跳過,減少垃圾回收線程遍歷標記的時間。

這種方式相當于在編程的時候告訴虛擬機某些對象你可以在*時間后在進行收集或者由代碼標識可以收集了(類似C、C++),在這之前你即便去遍歷他也是沒有效果的,他肯定是還在被引用的。

這種方式如果JVM可以實現,個人認為將是一個飛躍,Java即有了垃圾回收的優勢,又有了C、C++對內存的可控性。

線程分配

Java的阻塞式的線程模型基本上可以拋棄了,目前成熟的NIO框架也比較多了。阻塞式IO帶來的問題是線程數量的線性增長,而NIO則可以轉換成為常數線程。因此,對于服務端的應用而言,NIO還是唯一選擇。不過,JDK7中為我們帶來的AIO是否能讓人眼前一亮呢?我們拭目以待。

其他的JDK

本文說的都是Sun的JDK,目前常見的JDK還有JRocket和IBM的JDK。其中JRocket在IO方面比Sun的高很多,不過Sun JDK6.0以后提高也很大。而且JRocket在垃圾回收方面,也具有優勢,其可設置垃圾回收的最大暫停時間也是很吸引人的。不過,系統Sun的G1實現以后,在這方面會有一個質的飛躍。

原文鏈接:http://pengjiaheng.iteye.com/blog/558619

【編輯推薦】

  1. JVM調優總結:調優方法
  2. JVM調優總結:新一代的垃圾回收算法
  3. JVM調優總結:典型配置舉例
  4. JVM調優總結:分代垃圾回收詳述
  5. JVM調優總結:垃圾回收面臨的問題
責任編輯:林師授 來源: 和你在一起的博客
相關推薦

2019-12-20 14:21:26

JVM調優垃圾回收

2012-01-10 14:35:08

JavaJVM

2010-09-25 13:05:07

JVM參數

2012-01-10 14:18:40

JavaJVM

2010-09-26 13:48:51

JVM調優

2012-01-09 16:53:36

JavaJVM

2012-01-09 16:02:19

JavaJVM

2017-07-21 08:55:13

TomcatJVM容器

2023-11-11 19:07:23

JVMJava

2021-03-17 11:35:11

JVM代碼Java

2012-01-10 11:19:35

JavaJVM

2012-01-09 17:06:16

JavaJVM

2010-09-26 13:39:46

JVM調優

2010-09-26 09:08:17

JVM調優

2021-06-03 08:32:18

JVM調優虛擬機

2017-10-17 14:02:30

jvm調優工具

2017-09-22 15:15:23

jvm調優命令

2021-11-21 23:03:38

jvm調優虛擬機

2010-09-27 09:23:42

JVM調優

2024-12-04 15:49:29

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久精品影院 | 色综合99 | 午夜av一区二区 | 国产精品日韩一区二区 | 超碰伊人 | 精品福利一区二区三区 | 久久三区 | 午夜影院黄 | 久久91av| 日韩高清国产一区在线 | 日韩在线观看中文字幕 | 给我免费的视频在线观看 | 一区二区三区在线播放视频 | 亚洲高清在线视频 | 亚洲高清av在线 | 秋霞在线一区 | 欧美日韩综合一区 | 国产一区黄色 | 91视频正在播放 | 美女午夜影院 | 欧美炮房 | 久草免费福利 | 国产超碰人人爽人人做人人爱 | 日韩www视频 | 欧美v日韩v | 最新中文字幕在线播放 | 九九导航| 国产日韩欧美一区二区在线播放 | 亚洲精品一区二区三区蜜桃久 | 午夜av电影院 | pacopacomama在线 | 日本不卡在线视频 | 日韩在线不卡视频 | 96国产精品久久久久aⅴ四区 | 色综合久久久久 | 日韩中文字幕一区 | 色婷婷在线视频 | 91亚洲国产亚洲国产 | 欧美久久一区二区三区 | 黑人巨大精品欧美一区二区免费 | 日韩在线|