【性能測試】:記一次性能調優過程

1,性能壓測狀況:單交易50,100和200用戶壓測場景中,發現該交易很穩定的大概有5%左右的失敗率,數組

2,後臺根據流水號分析日誌:性能

  發現失敗的交易,均提示一個時間字段上傳的結果爲空,故而致使交易失敗;線程

  95%的交易都成功,該時間字段都有值;日誌

3,審查代碼發現,該交易上送了多個字段,只有該時間字段是靜態變量static定義來保存的,後定義爲一個局部變量來存儲該字段,解決問題,交易成功率100%。對象

 

緣由分析:生命週期

棧內存:存儲的都是局部變量,該變量有本身的做用域,一旦離開做用域,變量就會被釋放。棧內存的更新速度很快,由於局部變量的生命週期都很短。內存

堆內存:存儲的是數組和對象(其實數組就是對象),凡是new創建的都是在堆中,堆中存放的都是實體(對象),實體用於封裝數據,並且是封裝多個(實體的多個屬性),若是一個數據消失,這個實體也沒有消失,還能夠用,因此堆是不會隨時釋放的,可是棧不同,棧裏存放的都是單個變量,變量被釋放了,那就沒有了。堆裏的實體雖然不會被釋放,可是會被當成垃圾,Java有垃圾回收機制不定時的收取。作用域

方法區:又叫靜態區,跟堆同樣,被全部的線程共享。方法區包含全部的class和static變量。class

相關文章
相關標籤/搜索