๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๊ธฐํƒ€

adsjumbo ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ (memory leak) ๋ฌธ์ œ ํ•ด๊ฒฐ

728x90
๋ฐ˜์‘ํ˜•

์•ฝ๊ฐ„์˜ ์ปคํ”ผ๊ฐ’(1๋…„ ๋™์•ˆ 1๋‹ฌ๋Ÿฌ ์ •๋„ ๋ฒˆ ๊ฒƒ ๊ฐ™๋„ค์š”. ^^;)์„ ์œ„ํ•˜์—ฌ ์ œ๊ฐ€ ๋งŒ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์— adsjumbo ๊ด‘๊ณ ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, 1์ฃผ์ผ ์ „์ฏค์— adsjumbo ๊ด‘๊ณ ๋ฅผ ์‚ฝ์ž…ํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊พธ์ค€ํžˆ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ด‘๊ณ  ์‚ฝ์ž… ํ”„๋กœ๊ทธ๋žจ์„ 10๋ถ„ ์ด์ƒ ์ผœ๋†“๊ฒŒ ๋˜๋ฉด ๋žจ์„ 500M ์ด์ƒ ์žก์•„๋จน๊ฒŒ ๋˜๋ฉฐ, ์ดํ›„์—๋„ ๊ณ„์† ์ƒ์Šนํ•˜์—ฌ 1G, 2G ๊ณ„์† ์˜ฌ๋ผ๊ฐ€๋Š” ๊ตฐ์š”.

์•„๋งˆ ๋ช‡์‹œ๊ฐ„์„ ์ผœ๋†“์œผ๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ๋Š๋ ค์ง€๊ฑฐ๋‚˜ ๋ฉˆ์ถ”๊ฒŒ ๋˜๊ฒ ์ฃ ?

 

์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋ง ํ•ด๊ฐ€๋ฉฐ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•„๋ณด์•˜์ง€๋งŒ, ๋‹ต์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ adsjumbo ๊ด‘๊ณ ๋ฅผ ํฌ๊ธฐํ• ๊นŒ ์ƒ๊ฐ์„ ํ•˜๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•œ ์‹œ๋„๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์–ด๋Š์ •๋„ ๋ง‰์•„์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์˜ค๋ž˜ ์ผœ๋†“์•„๋„ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด 160M๋ฅผ ๋„˜์ง€ ์•Š๋„ค์š”.

 

 

๋ฐฉ๋ฒ•์€ ๊ด‘๊ณ ๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ ํ›„ ํƒ€์ด๋จธ๋ฅผ ํ†ตํ•ด ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์‚ญ์ œ ํ›„ ๋‹ค์‹œ ์ƒ์„ฑ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

1. ๋ณ€์ˆ˜ ์„ ์–ธ (Variable declaration)

AdsJumboWinForm.BannerAds bannerAds1;

 

2. Form1_Load ์—์„œ bannerAds1 ๋™์  ์ƒ์„ฑ (Dynamically create bannerAds1 in Form1_Load)

bannerAds1 = new AdsJumboWinForm.BannerAds();

this.Controls.Add(bannerAds1);

bannerAds1.Location = new System.Drawing.Point(7, 419);

bannerAds1.BringToFront();

bannerAds1.ShowAd(468, 60, "your Application ID");

timer1.Interval = 55000;

timer1.Enabled = true;

 

3. timer1 ์ถ”๊ฐ€ (Add timer1)

bannerAds1.Dispose();

GC.SuppressFinalize(this);

System.GC.Collect(0, GCCollectionMode.Forced);

System.GC.WaitForFullGCComplete();

timer2.Interval = 5000;

timer2.Enabled = true;

 

4. timer2 ์ถ”๊ฐ€ (Add timer2)

bannerAds1 = new AdsJumboWinForm.BannerAds();

this.Controls.Add(bannerAds1);

bannerAds1.ShowAd(468, 60, "your Application ID");

bannerAds1.Location = new System.Drawing.Point(7, 419);

bannerAds1.BringToFront();

timer2.Enabled = false;

 
timer1.inteval๊ณผ timer2.inteval์„ ์ ์ ˆํžˆ ์กฐ์ •ํ•˜๋ฉด์„œ ์ตœ์ ์˜ ๊ฐ’์„ ์ฐพ์•„๋ณด์„ธ์š”.

 

์ €๋Š” ๊ทธ๋ƒฅ ์œ„์—์ฒ˜๋Ÿผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ ์˜ˆ์‹œ C# winform file๋„ ์˜ฌ๋ ค๋‘ก๋‹ˆ๋‹ค.

ํ•„์š”ํ•˜์‹  ๋ถ„์€ ์ฐธ๊ณ ํ•˜์„ธ์š”.

 

adsjumbo_memory_test.zip
0.30MB

728x90
๋ฐ˜์‘ํ˜•