๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ ์„ค์ •

์ธํ…”๋ฆฌ์ œ์ด(IntelliJ) - VisualVM ์„ค์น˜ ๋ฐ ์—ฐ๋™ํ•˜๊ธฐ

by ์—‰๋šฑํ•œ ์ฃผ๋ฐœ2 2021. 9. 14.

๐Ÿ“Ž  ์ธํ…”๋ฆฌ์ œ์ด(IntelliJ) - VisualVM ์„ค์น˜ ๋ฐ ์—ฐ๋™ํ•˜๊ธฐ

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ์— ์ •๋ฆฌํ•  ํฌ์ŠคํŒ…์€ ์ธํ…”๋ฆฌ์ œ์ด IDE์—์„œ VisualVM์„ ์„ค์น˜ํ•˜๊ณ  ์—ฐ๋™ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

VisualVM์˜ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ๋Š” VisualVM์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

VisualVM is a visual tool integrating commandline JDK tools and lightweight profiling capabilities.
Designed for both development and production time use.

-> VisualVM์€ ์ปค๋งจ๋“œ๋ผ์ธ JDK ๋„๊ตฌ์™€ ๊ฒฝ๋Ÿ‰์˜ ํ”„๋กœํŒŒ์ผ๋ง ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•˜๋Š” ์‹œ๊ฐ์  ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. 

-> ๊ฐœ๋ฐœ ๋ฐ ์ƒ์‚ฐ ์‹œ๊ฐ„์˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋””์ž์ธ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค

VIsualVM์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ JVM์˜ CPU ๋ฉ”๋ชจ๋ฆฌ, Heap, Thread์˜ ์ƒํƒœ์™€ GC์ˆ˜ํ–‰, Heap Dump๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์— ๋Œ€ํ•ด ์‹œ๊ฐํ™”๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ข‹์€ ํˆด์ž…๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” IDE์ธ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•ด ๊ฐ„๋‹จํžˆ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

 

VisualVM ํ”„๋กœ๊ทธ๋žจ ์„ค์น˜


๋จผ์ € VisualVM ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ ๋’ค ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐ›๊ณ  ์••์ถ•์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

 

 

์••์ถ•์„ ํ•ด์ œํ•˜์‹  ๋’ค bin ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌํ•˜๋Š” visualvm์€ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์„ค์ •์— ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ path์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์ธํ…”๋ฆฌ์ œ์ด์—์„œ VisualVM ์„ค์น˜ํ•˜๊ธฐ


IntelliJ Preferences(command + ,) > Plugin > VisualVM ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•œ ๋’ค IntelliJ Preferences > Other Settings > VisualVM Launcher ์„ค์ •์œผ๋กœ ์ด๋™ํ•˜์‹  ๋’ค path๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • VisualVM executable: VisualVM์„ ์„ค์น˜ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๊ฐ„ ํ›„ visualvm ํ”„๋กœ๊ทธ๋žจ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • Custom JDK home path: JDK๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” path๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

VisualVM ์‹คํ–‰ํ•˜๊ธฐ


์ธํ…”๋ฆฌ์ œ์ด๋ฅผ ์žฌ์‹œ์ž‘ ํ•œ ํ›„ ์ƒ๋‹จ์— ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•„์ด์ฝ˜์ด ์ƒ๊ธด๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ๊ฐ Run / Debug๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์•„์ด์ฝ˜์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด VisualVm์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

 

 

์ •๋ฆฌ


์ด์ƒ์œผ๋กœ ์ธํ…”๋ฆฌ์ œ์ด + VisualVM์˜ ์„ค์น˜์™€ ์‹คํ–‰ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด์ „์— GC๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ์œ„ํ•ด ๊ฐ„๋‹จํžˆ ์‚ฌ์šฉํ•ด ๋ณธ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ์š”, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ์— ์ข‹์€ ๋„๊ตฌ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ถ”ํ›„์—๋Š” ๊ฐ•์ œ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋‚˜ GC ์ˆ˜ํ–‰๊ณผ ๊ด€๋ จํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ํ›„ ํฌ์ŠคํŒ…์„ ์˜ฌ๋ฆฌ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ

 

๋Œ“๊ธ€0