国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

竟然還有人使用這個有Bug的JDK!

開發 前端
JVM優化的目標就是:盡可能讓對象都在新生代里分配和回收,盡量別讓太多對象頻繁進入老年代,避免頻繁對老年代進行垃圾回收,同時給系統充足的內存大小,避免新生代頻繁的進行垃圾回收。?

十一假期期間,一名跟我一樣國慶期間也在上班的小伙伴跟我說:他寫的程序在測試環境一點問題沒有,但是發到生產環境卻會頻繁出現內存溢出的情況,這個問題都困擾他一周多了。于是乎,假期期間,我便開始幫他排查各種問題。

小伙伴的疑問

問題確定

排查問題的整個過程相當耗時,這里,我就直接說定位到的問題吧。后面,我會單獨寫一篇詳細的排查問題過程的文章!

在排查問題的過程中,我發現這位小伙伴使用的JDK還是1.6版本。開始,我也沒想那么多,繼續排查他寫的代碼,也沒找出什么問題。但是一旦啟動生產環境的程序,沒過多久,JVM就拋出了內存溢出的異常。

這就奇怪了,怎么回事呢?

啟動程序時加上合理的JVM參數,問題依然存在。。。

沒辦法,繼續看他的代碼吧!無意間,我發現他寫的代碼中,大量使用了String類的substring()方法來截取字符串。于是,我便跟到JDK中的代碼查看傳遞進來的參數。

這無意間點進來的一次查看,竟然找到了問題所在!!

JDK1.6中String類的坑

經過分析,竟然發現了JDK1.6中String類的一個大坑!為啥說它是個坑呢?就是因為它的substring()方法會把人坑慘!不多說了,我們先來看下JDK1.6中的String類的substring()方法。

public String substring(int bedinIndex, int endIndex){
    if(beginIndex < 0){
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    if(endIndex > count){
        throw new StringIndexOutOfBoundsException(endIndex);
    }
    if(beginIndex > endIndex){
          throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
    }
    return ((beginIndex == 0) && (endIndex == count)) ? this : new String(offset + beginIndex, endIndex - beginIndex, value);
}

接下來,我們來看看JDK1.6中的String類的一個構造方法,如下所示。

String(int offset, int count, char[] value){
    this.value = value;
    this.offset = offset;
    this.count = count;
}

看到,這里,相信細心的小伙伴已經發現了問題,導致問題的罪魁禍首就是下面的一行代碼。

this.value = value;

在JDK1.6中,使用 String 類的構造函數創建子字符串的時候,并不只是簡單的拷貝所需要的對象,而是每次都會把整個value引用進來。如果原來的字符串比較大,即使這個字符串不再被應用,這個字符串所分配的內存也不會被釋放。 這也是我經過長時間的分析代碼得出的結論,確實是太坑了!!

既然問題找到了,那我們就要解決這個問題。

升級JDK

既然JDK1.6中的String類存在如此巨大的坑,那最直接有效的方式就是升級JDK。于是,我便跟小伙伴說明了情況,讓他將JDK升級到JDK1.8。

同樣的,我們也來看下JDK1.8中的String類的substring()方法。

public String substring(int beginIndex, int endIndex) {
    if (beginIndex < 0) {
        throw new StringIndexOutOfBoundsException(beginIndex);
    }
    if (endIndex > value.length) {
        throw new StringIndexOutOfBoundsException(endIndex);
    }
    int subLen = endIndex - beginIndex;
    if (subLen < 0) {
        throw new StringIndexOutOfBoundsException(subLen);
    }
    return ((beginIndex == 0) && (endIndex == value.length)) ? this
        : new String(value, beginIndex, subLen);
}

在JDK1.8中的String類的substring()方法中,也調用了String類的構造方法來生成子字符串,我們來看看這個構造方法,如下所示。

public String(char value[], int offset, int count) {
    if (offset < 0) {
        throw new StringIndexOutOfBoundsException(offset);
    }
    if (count <= 0) {
        if (count < 0) {
            throw new StringIndexOutOfBoundsException(count);
        }
        if (offset <= value.length) {
            this.value = "".value;
            return;
        }
    }
    // Note: offset or count might be near -1>>>1.
    if (offset > value.length - count) {
        throw new StringIndexOutOfBoundsException(offset + count);
    }
    this.value = Arrays.copyOfRange(value, offset, offset+count);
}

在JDK1.8中,當我們需要一個子字符串的時候,substring 生成了一個新的字符串,這個字符串通過構造函數的 Arrays.copyOfRange 函數進行構造。這個是沒啥問題。

優化JVM啟動參數

這里,為了更好的提升系統的性能,我也幫這位小伙伴優化了JVM啟動參數。

經小伙伴授權, 我簡單列下他們的業務規模和服務器配置:整套系統采用分布式架構,架構中的各業務服務采用集群部署,日均訪問量上億,日均交易訂單50W~100W,訂單系統的各服務器節點配置為4核8G。目前已將JDK升級到1.8版本。

根據上述條件,我給出了JVM調優后的參數配置。

-Xms3072M -Xmx3072M -Xmn2048M -Xss1M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M

至于,為啥會給出上述JVM參數配置,后續我會單獨寫文章來具體分析如何根據實際業務場景來進行JVM參數調優。

經過分析和解決問題,小伙伴的程序在生產環境下運行的很平穩,至少目前還未出現內存溢出的情況!!

結論

如果在程序中創建了比較大的對象,并且我們基于這個大對象生成了一些其他的信息,此時,一定要釋放和這個大對象的引用關系,否則,就會埋下內存溢出的隱患。

JVM優化的目標就是:盡可能讓對象都在新生代里分配和回收,盡量別讓太多對象頻繁進入老年代,避免頻繁對老年代進行垃圾回收,同時給系統充足的內存大小,避免新生代頻繁的進行垃圾回收。

責任編輯:姜華 來源: 冰河技術
相關推薦

2022-05-10 12:20:04

JDKversion故障

2019-06-14 08:48:46

Tomcat日志SpringBoot

2019-10-28 10:19:27

JVM 類加載器Java

2021-07-26 06:57:59

Synchronize線程安全

2021-12-08 08:30:55

Java AQS機制 Java 基礎

2020-09-29 06:45:49

JDK

2016-12-20 08:11:26

地圖Here科技早新聞

2018-07-02 12:38:28

2017-06-09 06:59:06

Tomcat特權應用容器

2023-10-30 08:16:33

數據庫插件Mybatis

2012-08-13 09:25:50

程序員

2023-03-13 08:09:03

Protobuffeature分割

2020-12-17 07:39:30

HashMap死循環數據

2021-10-18 13:42:52

加密貨幣金融工具

2022-12-08 09:26:07

PiniaVuex

2024-09-27 11:38:49

2021-09-30 08:40:28

Oracle數據庫后端開發

2021-05-07 05:34:25

Windows10操作系統微軟

2022-07-27 13:06:50

MySQL數據庫命令

2020-04-02 14:33:42

MySQLBUG解決方案
點贊
收藏

51CTO技術棧公眾號

日韩av在线影院| 亚洲福利视频网| 小泽玛利亚av在线| 尹人成人综合网| 欧美日产国产成人免费图片| 美女91在线看| 91精品福利视频| xxxcom在线观看| 色婷婷av一区二区三区软件 | 精品一区二区三区视频在线播放| 欧美一二三四区在线| 牛牛澡牛牛爽一区二区| 亚洲精品国产a久久久久久 | 黄色小视频在线播放| 国产精品久久久久久久久免费丝袜| 国产精品入口芒果| 国内精品免费**视频| 国产日韩欧美精品电影三级在线| 日本在线观看一区二区三区| 久久婷婷五月综合色丁香| 在线视频国内一区二区| 欧美一区二区中文字幕| jvid福利写真一区二区三区| 成人在线播放网址| 成人aaaa免费全部观看| 精品中文字幕av| 日本一区二区久久| 九色免费视频| 欧美日韩国产精品| av在线免费观看网| 欧美不卡一二三| 欧美一级大片| 欧美国产亚洲精品久久久8v| 制服丝袜日韩| 91在线免费看网站| 国产精品亚洲欧美| 在线观看视频黄色| www.亚洲色图.com| www.xxx黄| 欧美性一二三区| 日韩电影毛片| 久久免费视频网站| 香蕉国产精品| 亚洲巨乳在线观看| 久久色成人在线| www.男人的天堂| 欧美日韩免费一区二区三区视频| а√在线天堂官网| 欧美激情欧美激情| 香蕉视频官网在线观看日本一区二区| 免费在线国产精品| 99久久精品免费精品国产| 国产网站av| 91超碰这里只有精品国产| 91成人在线| 成人免费直播live| 精品一区二区在线播放| 亚洲色图久久久| 欧美无砖专区一中文字| 99久久婷婷国产综合精品首页| 国产成人拍精品视频午夜网站| 久久天天综合| 一区二区三区 欧美| 666欧美在线视频| 亚洲精品观看| 好吊妞www.84com只有这里才有精品| 国产盗摄女厕一区二区三区| 日本在线三级| 国产一区二区三区在线观看网站 | 黄色av网址在线播放| 好吊成人免视频| 日本一区免费网站| 亚洲一区中文字幕| 成人性视频免费网站| 三级视频网站在线| 国产亚洲视频在线| 亚洲国产精品成人| 日韩在线第三页| 日韩午夜激情电影| 欧美日韩一区二区综合 | 深夜福利在线看| 丝袜美腿精品国产二区| 最新欧美人z0oozo0| 国产精品秘入口18禁麻豆免会员| 欧美无乱码久久久免费午夜一区| 亚洲成人av资源网| 四虎8848精品成人免费网站| 男人天堂资源在线| 日韩精品在线私人| 久久成人综合| 国产在线青青草| 欧美tk—视频vk| 国产日韩欧美一区二区三区| 麻豆传媒网站在线观看| 在线观看日韩电影| 色综合久久中文| 少妇高潮喷水在线观看| 日韩写真欧美这视频| 98精品视频| 成人亚洲在线观看| 一区二区三区国产视频| 欧美亚洲一区| 国产三级电影在线观看| 欧洲亚洲免费在线| 久久久久久久久97黄色工厂| 欧美三级精品| 做爰高潮hd色即是空| 日韩一级二级三级| 日韩电视剧在线观看免费网站 | 91社区在线观看| 97精品国产97久久久久久免费| 精品一区二区综合| av毛片在线播放| 超碰97在线人人| 亚洲成人免费电影| 全国精品免费看| 久久精品中文字幕电影| 欧美中文字幕一二三区视频| 激情欧美国产欧美| 日韩欧美亚洲日产国产| 好吊成人免视频| 久久人体视频| 狠狠干婷婷色| 国内精品视频久久| 成人动漫精品一区二区| 成人软件在线观看| 无码人妻aⅴ一区二区三区日本| 欧美日韩国产另类不卡| 欧美不卡在线| 一区二区三区视频网站 | 91观看网站| 精品国产91久久久久久老师| 亚洲传媒在线| 毛片视频免费观看| 欧美最顶级的aⅴ艳星| 中文字幕中文字幕在线一区| 国产精品22p| www.1024| 国产精品久久久久久久久久小说 | 97人人在线视频| 欧美电视剧在线看免费| 影视一区二区| 亚洲免费一区三区| 9久re热视频在线精品| 国产精品一区二区精品视频观看| 久久久91精品国产一区不卡| 成人国产精品免费观看| 小黄鸭精品aⅴ导航网站入口| 五码日韩精品一区二区三区视频| 欧美精品日日鲁夜夜添| 欧美专区一区二区三区| av在线播放国产| 亚洲欧美日韩精品在线| 亚洲美女性视频| www.欧美色图| 精品久久ai| 最新在线你懂的| 国产精品国产一区二区| 欧美大胆人体bbbb| 粉嫩欧美一区二区三区高清影视| 性欧美video另类hd尤物| 色悠悠久久综合网| 国产精品一区久久| 欧美精品免费视频| jizz在线观看中文| 国产亚洲人成a在线v网站| 日韩av电影资源网| av在线中出| 日本免费视频在线观看| 精彩视频一区二区| 国产精欧美一区二区三区蓝颜男同| 日韩欧美国产综合在线| 欧美激情网站在线观看| 午夜精品爽啪视频| 久久精品盗摄| 日韩五码电影| 最全影音av资源中文字幕在线| 麻豆传媒一区二区| 久久久精品久久| 91黄色小视频| 99re热这里只有精品免费视频| 日本午夜精品久久久| 97caopron在线视频| 黄在线观看网站| 国产精品嫩草99a| 国产精品乱码久久久久久| 中文字幕永久在线不卡| 国产精品美女久久久久久久久| 国产一区二区三区四区老人| 亚洲成人三级| 日韩精品视频在线观看视频| 全球成人中文在线| 精品国产凹凸成av人导航| 国产精品日产欧美久久久久| 一本色道久久综合亚洲精品高清 | 一区二区在线观看视频| 另类小说视频一区二区| 久久av免费| 国产精品久久久久久妇女| 黄色小视频在线观看|