第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Junit java.lang.OutOfMemoryError 超出 GC 開銷限制

Junit java.lang.OutOfMemoryError 超出 GC 開銷限制

藍山帝景 2022-06-30 11:36:29
我有以下@BeforeJUnit 測試方法:List<MyClass> allCombinations = new ArrayList<>();@Beforepublic void generateCombinations() {    int index = 0;    char[] binaryChars = null;    MyClass myMockObj = mock(MyClass.class);    for (int i = 0; i < Math.pow(2, 15); i++) {        binaryChars = StringUtils.leftPad(Integer.toBinaryString(i), variables).toCharArray();        when(myMockObj.method1()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method2()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method3()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method4()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method5()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method6()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method7()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method8()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method9()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method10()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method11()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method12()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method13()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method14()).thenReturn(binaryChars[index++] == '0');        when(myMockObj.method15()).thenReturn(binaryChars[index++] == '0');        allCombinations.add(myMockObj);        index = 0;    }}此方法引發(fā)以下錯誤:java.lang.OutOfMemoryError: GC overhead limit exceededClose stacktraceat java.util.Arrays.copyOf(Arrays.java:3236)我從這里了解錯誤是什么。但是,我不知道上面代碼中出現(xiàn)此錯誤的原因。
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

JUnit 的一個有趣特性是它為您運行的每個測試用例創(chuàng)建一個測試類的實例,并且在所有測試都運行之前,這些實例不會為 GC 釋放。


因此,如果您在測試用例中將大量數(shù)據(jù)分配給實例變量(例如在每次測試之前運行的 generateCombinations 方法中),您必須在測試后手動釋放數(shù)據(jù)。


嘗試添加方法


@After

public void cleanup() {

    allCombinations  = null;

}

我們制作了一個工具,它可以通過反射自動完成。


如果清理測試類沒有幫助,那么你只需要投入更多的內(nèi)存......


查看完整回答
反對 回復(fù) 2022-06-30
  • 1 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號