在看內(nèi)存管理術(shù)語表的時候偶然發(fā)現(xiàn)了”Pig in the Python(注:有點像中文里的貪心不足蛇吞象)”的定義,于是便有了這篇文章。表面上看,這個術(shù)語說的是GC不停地將大對象從一個分代提升到另一個分代的情景。這么做就好比巨蟒整個吞食掉它的獵物,以至于它在消化的時候都沒辦法移動了。
在接下來的這24個小時里我的頭腦中充斥著這個令人窒息的巨蟒的畫面,揮之不去。正如精神病醫(yī)生所說的,消除恐懼最好的方法就是說出來。于是便有了這篇文章。不過接下的故事我們要講的不是蟒蛇,而是GC的調(diào)優(yōu)。我對天發(fā)誓。
大家都知道GC暫停很容易造成性能瓶頸。現(xiàn)代JVM在發(fā)布的時候都自帶了高級的垃圾回收器,不過從我的使用經(jīng)驗來看,要找出某個應用最優(yōu)的配置真是難上加難。手動調(diào)優(yōu)或許仍有一線希望,但是你得了解GC算法的確切機制才行。關(guān)于這點,本文倒是會對你有所幫助,下面我會通過一個例子來講解JVM配置的一個小的改動是如何影響到你的應用程序的吞吐量的。
示例
我們用來演示GC對吞吐量產(chǎn)生影響的應用只是一個簡單的程序。它包含兩個線程:
PigEater 主站蜘蛛池模板: 衡阳县| 抚松县| 姚安县| 灵寿县| 海丰县| 泰安市| 小金县| 昌宁县| 米林县| 扎囊县| 古丈县| 齐河县| 南川市| 陇西县| 甘德县| 玛多县| 临清市| 华阴市| 依安县| 垣曲县| 甘肃省| 吴旗县| 柳林县| 得荣县| 朝阳区| 阳春市| 崇州市| 马尔康县| 新民市| 武穴市| 将乐县| 马尔康县| 泰兴市| 循化| 文山县| 城固县| 额济纳旗| 苍山县| 三亚市| 嘉义市| 广德县|