[Contact]
[Career]
็พ) ์ฑ๋์ฝํผ๋ ์ด์ - Lv 4. Backend Engineer
ๅ) ์ฐจ์ด์ฝํผ๋ ์ด์ (ํฌํธ์) - Backend Engineer
[Education]
็พ) F-Lab ๋ฐฑ์๋ ๋ฉํ
็พ) JSCODE ๋ฐฑ์๋ ๋ฉํ
ๅ) ์ฐ์ํํ ํฌ์ฝ์ค 5๊ธฐ ๋ฐฑ์๋ ๋ฆฌ๋ทฐ์ด & 3๊ธฐ ๋ฐฑ์๋ ์๋ฃ์
Courses
Reviews
rrksns0193
ยท
CS Interview Preparation - Database Edition: Insights Directly from Channel Talk InterviewersCS Interview Preparation - Database Edition: Insights Directly from Channel Talk Interviewers- CS Interview Preparation Guide: Java Edition โ Directly from Channel Talk Interviewers
newbeginner
ยท
CS Interview Preparation - Database Edition: Insights Directly from Channel Talk InterviewersCS Interview Preparation - Database Edition: Insights Directly from Channel Talk Interviewers- CS Interview Preparation Guide: Java Edition โ Directly from Channel Talk Interviewers
- CS Interview Preparation Guide: Java Edition โ Directly from Channel Talk Interviewers
Posts
Q&A
์ง๋ฌธ์์ต๋๋ค.
์๋ ํ์ธ์, ์กฐ์ฑ์ฐ๋!ํฐ ๊ทธ๋ฆผ์ ๋ง๊ฒ ์ดํดํ์ จ์ด์. ๋ค๋ง ํ ๊ฐ์ง ๋ํ ์ผ์ ์ถ๊ฐ๋ก ์์ ์ฃผ์ ์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ถ๋ฅ๋ ๋ง์ํ์ ๊ทธ๋๋ก์ ๋๋ค.์ฝ๊ธฐ๋ง ์ํ (๊ฐ์์ฑ๋ง ๋ณด์ฅํ๋ฉด ์ถฉ๋ถ): volatile์ฝ๊ธฐ + ์ฐ๊ธฐ (์์์ฑ๋ ํ์): synchronized ๋๋ Atomic ๋ค๋ง ์์๋์๋ฉด ์ข์ ์ ์, synchronized๋ ์์์ฑ๋ฟ ์๋๋ผ ๊ฐ์์ฑ ๋ฌธ์ ๋ ํจ๊ป ํด๊ฒฐํ๋ค๋ ์ ์ด์์. ์๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ(JMM)์ด ๋ฝ ํ๋/ํด์ ์์ ์ ๋ค์์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฝ ํ๋ (synchronized ์ง์ ): CPU ์บ์๋ฅผ ๋ฌดํจํํ๊ณ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์์ ์ต์ ๊ฐ์ ๋ค์ ์ฝ์ด์ด๋ฝ ํด์ (synchronized ์ข ๋ฃ): ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก flush ์ฆ synchronized ๋ธ๋ก์ ์ง์ ํ๊ฑฐ๋ ๋น ์ ธ๋๊ฐ ๋๋ง๋ค ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ๋ฆฌ์ด๊ฐ ๋์ํด์ ๊ฐ์์ฑ์ด ์์ฐ์ค๋ฝ๊ฒ ๋ณด์ฅ๋ฉ๋๋ค. Atomic ํด๋์ค๋ค๋ ๋ด๋ถ์ ์ผ๋ก volatile ๋ณ์์ CAS ์ฐ์ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์์ฑ์ ํจ๊ป ๋ณด์ฅํ๊ณ ์. ์ ๋ฆฌํ๋ฉด ์ด๋ ์ต๋๋ค.๊ฐ์์ฑ๋ง ํ์ํ ๋ โ volatile (๊ฐ์ฅ ๊ฐ๋ณ๊ณ ์ฑ๋ฅ ์ข์)์์์ฑ๋ ํ์ํ ๋ โ synchronized ๋๋ Atomic (๋ ๋ค ๊ฐ์์ฑ๋ ์๋ ํด๊ฒฐ)
- Likes
- 1
- Comments
- 2
- Viewcount
- 61
Q&A
ํฌํ ๋ฆฌ๋ ํด๊ฒฐ ์์ ์ง๋ฌธ
์๋ ํ์ธ์, Cola๋!์ ํํ ์ง์ด์ฃผ์ จ์ต๋๋ค. ์ข์ ์ง์ ๊ฐ์ฌํฉ๋๋ค. ๋ง์ํ์ ๋๋ก SELECT ... FOR UPDATE WHERE id = 5์์ id๊ฐ PK์ด๊ณ ํด๋น row๊ฐ ์กด์ฌํ๋ค๋ฉด, InnoDB๋ ๊ฐญ๋ฝ ์์ด ๋ ์ฝ๋ ๋ฝ๋ง ๊ฑธ๋ฆฝ๋๋ค. MySQL ๊ณต์ ๋งค๋ด์ผ(17.7.3 Locks Set by Different SQL Statements in InnoDB)์๋ ๋ช ์๋์ด ์๋ ๋์์ด์์. "For a unique index with a unique search condition, InnoDB locks only the index record found, not the gap before it." ์ค์ ๋ก performance_schema.data_locks ํ ์ด๋ธ์์ ํ์ธํ์๋ฉด X, REC_NOT_GAP(record lock only)์ผ๋ก ์ฐํ๋ ์ผ์ด์ค์ ํด๋นํฉ๋๋ค. ์ ์ฒด ๋ฝ ๋์์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. InnoDB ๋ฝ ๋์ ์ ๋ฆฌ (REPEATABLE READ ๊ธฐ์ค)Unique Index + ์ ํํ ๊ฐ + row ์กด์ฌ => Record lock๋ง (๊ฐญ๋ฝ X)Unique Index + ์ ํํ ๊ฐ + row ์์ => Gap lockNon-Unique Index => Next-key lock (Record + Gap)๋ฒ์ ์กฐ๊ฑด (BETWEEN, >, Next-key lock (Record + Gap) InnoDB๊ฐ ํฌํ ๋ฆฌ๋๋ฅผ ๋ง๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก next-key lock์ ์ฌ์ฉํ๋ ํฐ ๊ทธ๋ฆผ์ ๊ทธ๋๋ก ๋ง์ง๋ง, ์ง๋ฌธํ์ ์ผ์ด์ค(Unique Index ๋จ์ผ ๋งค์น)๋ ์ ์ผ์ฑ ๋ณด์ฅ ์์ฒด๊ฐ ํฌํ ์ ์์ฒ ์ฐจ๋จํ๊ธฐ ๋๋ฌธ์ InnoDB๊ฐ ์ต์ ํ๋ก ๋ ์ฝ๋ ๋ฝ๋ง ๊ฑฐ๋ ์์ธ ์ผ์ด์ค์ ํด๋นํด์. ์๋ฃ์ ์์(WHERE id = 5)๋ next-key lock์ด ์ค์ ๋ก ๊ฑธ๋ฆฌ๋ ์ผ์ด์ค(๋ฒ์ ์กฐ๊ฑด ๋๋ Non-Unique Index)๋ก ๊ต์ฒดํ๊ณ , ์์ ๋ฝ ๋์ ์ ๋ฆฌ ํ๋ฅผ ๋ณด๊ฐ ์๋ฃ๋ก ์ถ๊ฐํด๋๊ฒ ์ต๋๋ค. ๋ํ ์ผ๊น์ง ์ ํํ๊ฒ ์ง์ด์ฃผ์ ๋๋ถ์ ์๋ฃ๊ฐ ํ ๋จ๊ณ ๋ ์ ๋ฐํด์ง ๊ฒ ๊ฐ์์. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ์ฐธ๊ณ ๋งํฌMySQL ๊ณต์ ๋งค๋ด์ผ 17.7.3 โ ํ์ ๋ชจ๋ ์ผ์ด์ค๊ฐ ๋ช ์๋์ด ์์ต๋๋คhttps://dev.mysql.com/doc/refman/8.0/en/innodb-locks-set.html๋น๊ทผ ํ ํฌ ๋ธ๋ก๊ทธ โ MySQL Gap Lock ๋ค์๋ณด๊ธฐ โ Real MySQL 8.0 ๊ณต์ ์(๋ฐฑ์๋น)๊ฐ ์์ฑํ ํ๊ตญ์ด ์ค๋ช , ๊ทธ๋ฆผ๊ณผ ์์๊ฐ ํ๋ถํฉ๋๋คhttps://medium.com/daangn/mysql-gap-lock-๋ค์๋ณด๊ธฐ-7f47ea3f68bc
- Likes
- 1
- Comments
- 1
- Viewcount
- 55
Q&A
MySql
์๋ ํ์ธ์, Cola๋!์ข์ ์ง๋ฌธ์ด์์. ์ ํํ๋ MySQL(InnoDB)์ด ์ฌ์ฉํ๋ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ B+Tree๊ฐ ๋ง์ต๋๋ค. ๋ค๋ง ๊ฐ์์์ B-Tree๋ฅผ ๋ค๋ฃฌ ๊ฑด ๋ฉด์ ๋น์ถ ํจํด์ ๊ณ ๋ คํ ์ ํ์ด์์. ๋ฉด์ ์์๋ ๋ณดํต "์ธ๋ฑ์ค ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํด์ฃผ์ธ์" ๋๋ "B-Tree๋ฅผ ์ค๋ช ํด์ฃผ์ธ์"๋ผ๋ ์์ ์ง๋ฌธ์ด ํจ์ฌ ์์ฃผ ๋์ค๊ณ , B+Tree๋ ๊ทธ ์์ ์น์ด์ง๋ ๋ณํ ๊ตฌ์กฐ๋ผ B-Tree๋ฅผ ๋จผ์ ์ ํํ ์ดํดํ์๋ฉด B+Tree๋ ์์ฐ์ค๋ฝ๊ฒ ๋ฐ๋ผ์ต๋๋ค. B+Tree๋ B-Tree์์ ๋ค์ ๋ ๊ฐ์ง๊ฐ ์ถ๊ฐ/๋ณ๊ฒฝ๋ ํํ๋ก ๋ณด์๋ฉด ๋ฉ๋๋ค.๋ฐ์ดํฐ๋ leaf node์๋ง ์ ์ฅ (internal node๋ key๋ง ๊ฐ์ง)Leaf node๋ผ๋ฆฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ์ด์ด์ ธ ๋ฒ์ ๊ฒ์์ ์ ๋ฆฌ ๊ท ํ ํธ๋ฆฌ ํน์ฑ, ๋ถํ /๋ณํฉ ๋์, ํ์ ์๊ฐ ๋ณต์ก๋ ๊ฐ์ ํต์ฌ ๋ฉ์ปค๋์ฆ์ B-Tree์ ๋์ผํฉ๋๋ค. ๊ทธ๋์ ๋ฉด์ ์์ "MySQL์ ์ธ๋ฑ์ค๋ ์ด๋ป๊ฒ ๋์ํ๋์?" ๊ฐ์ ์ง๋ฌธ์ด ๋ค์ด์ค๋ฉด, B-Tree ์ค๋ช ์ ๋ฒ ์ด์ค๋ก ๊น๊ณ โ "InnoDB๋ ์ด ์์์ B+Tree๋ก ๋ณํํด leaf node์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , leaf๋ผ๋ฆฌ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๋ฌถ์ด ๋ฒ์ ๊ฒ์์ ๋น ๋ฅด๊ฒ ๋ง๋ค์๋ค" ์ ๋๋ก ํ๋ฉด ๊น์ด ์๋ ๋ต๋ณ์ด ๋ฉ๋๋ค. ์ฆ B-Tree๋ ๋ฒ ์ด์ค, B+Tree๋ ๊ทธ ์์ ํนํ ๊ตฌ์กฐ๋ก ์ดํดํด์ฃผ์๋ฉด ๊ฐ์์์ B-Tree๋ฅผ ๋ค๋ฃฌ ์๋๊ฐ ์์ฐ์ค๋ฝ๊ฒ ์ด์ด์ง๋๋ค.
- Likes
- 1
- Comments
- 2
- Viewcount
- 55
Q&A
๋ฉํฐ์ค๋ ๋
์๋ ํ์ธ์, Cola๋! ๋๋ค์ ์คํธ๋ฆผ์ด ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์ ์์ ํ๋ค๋ ๊ฑด "์์ ํจ์๋ก ์ฌ์ฉํ๋ค๋ ์ ์ ์๋" ์์ ํ๋ค๋ ์๋ฏธ์์.์คํธ๋ฆผ API๋ ๊ฐ ์ฐ์ฐ์ด statelessํ๊ณ ๋ถ์ํจ๊ณผ๋ฅผ ์ผ์ผํค์ง ์๋๋ค๋ ๊ฒ์ ์ ์ ๋ก ์ค๊ณ๋์ด ์์ต๋๋ค. ์ด ์ ์ ๋ง ์งํค๋ฉด parallelStream()์ผ๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌํด๋ race condition ์์ด ์์ ํ๊ฒ ๋์ํฉ๋๋ค. Java ๊ณต์ ๋ฌธ์์์๋ ์คํธ๋ฆผ ์ฐ์ฐ์ statelessํด์ผ ํ๋ค๊ณ ๋ช ์๋์ด ์๊ณ ์. ๋ง์ํ์ ๋๋ก ๋๋ค ๋ด๋ถ์์ ์ธ๋ถ ๋ณ์๋ฅผ ์์ ํ๊ฑฐ๋ ๊ณต์ ์ํ์ ๋ถ์ํจ๊ณผ๋ฅผ ์ผ์ผํค๋ฉด ๋น์ฐํ ์์ ํ์ง ์์ต๋๋ค. ๋ค๋ง ์ด ๊ฒฝ์ฐ๋ ์คํธ๋ฆผ์ด ์์ ํ์ง ์์ ๊ฒ ์๋๋ผ, ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ค๊ณ ์์น์ ์ฌ์ฉ์๊ฐ ๊นฌ ๊ฒ์ด๋ผ๊ณ ๋ณด์๋ ๊ฒ ๋ง์์. ์๋ฃ์์ "์์ ํ๋ค"๊ณ ํ ๊ฑด ์๋๋ ์ฌ์ฉ ๋ฐฉ์, ์ฆ ์์ ํจ์๋ก ์์ฑํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ ํ ํํ์ ๋๋ค. ๋ฉด์ ์์๋ "์คํธ๋ฆผ์ statelessํ ์์ ํจ์๋ก ์์ฑํ๋ ๊ฒ์ ์ ์ ๋ก ์ค๊ณ๋์ด ์์ด์, ์ด ์ฝ์๋ง ์งํค๋ฉด parallelStream()์์๋ ์์ ํ๊ฒ ๋์ํฉ๋๋ค. ๋ถ์ํจ๊ณผ๊ฐ ์๋ ๋๋ค๋ฅผ ์ฐ๋ฉด ๊ทธ๊ฑด ํจ์ํ ์์น์ ๊นฌ ๊ฒ์ด์ง ์คํธ๋ฆผ์ ํ๊ณ๋ ์๋๋๋ค" ์ ๋๋ก ๋ต๋ณํ์๋ฉด ๋ฉ๋๋ค.
- Likes
- 1
- Comments
- 2
- Viewcount
- 58
Q&A
์ฑ๋ฅ ์ค๋ฒํค๋
์๋ ํ์ธ์, Cola๋!์ฌ์ค ์ผ๋ฐ์ ์ธ ์์คํ ์์ instanceof๋ก ์ธํด ์ฑ๋ฅ ์์ ํฐ ๋ฌธ์ ๊ฐ ๋๋ ๊ฑด ๋ง์ง๋ ์์ต๋๋ค.์ ํํ๋ ์์์ ๊น์ด๊ฐ ๊น์ด์ง๊ณ , ํด๋น ์์์ผ๋ก ์ด์ด์ง๋ ํด๋์ค๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ด๋ค์ ์ํํ๋ฉด์ ํ์ ์ ์ฐพ๋๋ฐ์! ์ด๋ฌํ ์์ญ ~ ์๋ฐฑ ๊ฐ ์ด์์ ํด๋์ค๊ฐ ์์ ๊ตฌ์กฐ๋ก ์ฐ๊ฒฐ๋ ํํ๊ฐ ๋ง์ ๊ฑฐ๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ฌ์ง๊ฐ ์์ต๋๋ค. ๋ฌผ๋ก ์ด๋ณด๋ค๋ ๋คํ์ฑ์ ๊นจ๋จ๋ฆฌ๋ ์ ์ด ๋ ๋ฉ์ธ ๋ฌธ์ ์ ์ด์ง๋ง, ์ฑ๋ฅ ์ค๋ฒํค๋๋ ์์๋๋ฉด ์ข๊ฒ ์ด์ ์๋ฃ๋ก ํฌํจํ๊ฒ ๋์์ต๋๋ค.
- Likes
- 1
- Comments
- 2
- Viewcount
- 55
Q&A
volatile์ ๋ํด ์ง๋ฌธ ์์ต๋๋ค.
์๋ ํ์ธ์, Cola๋!๊ฝค ์ข์ ์ง๋ฌธ์ ํด์ฃผ์ จ๋ค์ ใ ใ ๋ ์ค๋ช ์ ์ฌ์ค ๋ชจ์๋๋ ๊ฒ ์๋๋ผ ์๋ก ๋ค๋ฅธ ์ธก๋ฉด์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.์ฐ๋ฆฌ ์๋ฃ์ ์ค๋ช : ๊ฐ์์ฑ ๋ฌธ์ ๊ฐ ์ ๋ฐ์ํ๋์ง => ์ฝ์ด๋ณ ์บ์ ๊ตฌ์กฐ๊ฐ ๊ทผ๋ณธ ์์ธ๋ค๋ฅธ ์๋ฃ์ ์ค๋ช : volatile์ด ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง => happens-before์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ๋ฆฌ์ด ์ฐ๋ฆฌ ์๋ฃ์์ ์ค๋ช ํ๋ "์ฝ์ด๋ณ ์บ์๋ก ์ธํ ๊ฐ์์ฑ ๋ฌธ์ "๋ ์๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ ํ์ต์ ํ์ค ์ถ๋ฐ์ ์ด๊ณ , ๋ฉํฐ ์ฝ์ด ํ๊ฒฝ์์ ๊ฐ CPU ์ฝ์ด๊ฐ ๋ ๋ฆฝ์ ์ธ ์บ์๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ ์ ์ ์ ํํ ์ค๋ช ์ ๋๋ค. Cola ๋์ด ๋ณด์ ๋ค๋ฅธ ์๋ฃ๋ volatile์ด ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋๋๋ฅผ ๋ค๋ฃจ๋ ๋ถ๋ถ์ด์์. Java 5(JSR-133) ์ดํ volatile์ happens-before ๊ด๊ณ ํ์ฑ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ๋ฆฌ์ด ์ฝ์ ์ผ๋ก ๋์ํ๋ฉฐ, ์ด ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ๋ฆฌ์ด๊ฐ ์คํ๋ ๋ ๊ฒฐ๊ตญ CPU ์บ์ ์ผ๊ด์ฑ์ ๊ฐ์ ๋๊ธฐํํ๋ ํจ๊ณผ๋ฅผ ๋ ๋๋ค. ๋ ์ค๋ช ์ ๊ฐ์ ํ์์ ์์ธ๊ณผ ํด๊ฒฐ ๋ฉ์ปค๋์ฆ์ ๊ฐ๊ฐ ๋ค๋ฃจ๋ ๊ฒ์ด๋ผ, ์ถฉ๋์ด ์๋ ์ํธ ๋ณด์ ๊ด๊ณ์ ๋๋ค.๋ฉด์ ์์ ๋ง์ฝ ๋์ ๋ฌถ์ด์ ๋ต๋ณํ์๊ณ ์ถ๋ค๋ฉด, ์๋ ํํ๋ฅผ ๊ณ ๋ คํด๋ณด์๋ฉด ๋ฉ๋๋ค! "๋ฉํฐ ์ฝ์ด ํ๊ฒฝ์์ ๊ฐ ์ฝ์ด๊ฐ ๋ ๋ฆฝ์ ์ธ ์บ์๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ์์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. volatile์ happens-before ๊ด๊ณ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐฐ๋ฆฌ์ด๋ฅผ ํตํด ์ด ์บ์ ๊ฐ ๋๊ธฐํ๋ฅผ ๊ฐ์ ํ์ฌ, ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ต์ ๊ฐ์ ์ฝ์ ์ ์๊ฒ ๋ณด์ฅํฉ๋๋ค."
- Likes
- 2
- Comments
- 2
- Viewcount
- 86
Q&A
GC ์๊ณ ๋ฆฌ์ฆ
์๋ ํ์ธ์, Cola๋!Mark and Sweep์ ํต์ฌ ํค์๋๋ก ๊ฐ์ ธ๊ฐ์๋ ๊ฑด ์ถฉ๋ถํ ๊ด์ฐฎ์ต๋๋ค. Mark๋ ๋ชจ๋ GC ์๊ณ ๋ฆฌ์ฆ์ ๊ณตํต ์ถ๋ฐ์ ์ด๋ผ, ์ด๋ ์ปฌ๋ ํฐ๋ฅผ ์ฐ๋๋ผ๋ "GC Root์์ ์์ํด reachable ๊ฐ์ฒด๋ฅผ ๋งํนํ๋ค"๋ ์ ์ ๋์ผํ๊ธฐ ๋๋ฌธ์ด์์. ๋ค๋ง ๋ฉด์ ๋ต๋ณ์ ๋ ํ์ฑํ๊ฒ ๊ฐ์ ธ๊ฐ์๋ ค๋ฉด, Mark and Sweep ์ธ์ ํจ๊ป ์์๋์๋ฉด ์ข์ ์๊ณ ๋ฆฌ์ฆ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.Mark and Compact: ๋งํน ํ ์ด์๋จ์ ๊ฐ์ฒด๋ฅผ ํ์ชฝ์ผ๋ก ๋ชจ์ ์ ๋ฆฌ โ Mark and Sweep์ ๋จํธํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ, Old Generation์์ ์ฌ์ฉCopying: ์ด์๋จ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ์์ญ์ผ๋ก ๋ณต์ฌ โ Young Generation์ Eden โ Survivor ์ฌ์ด ์ด๋์ ์ฌ์ฉ ์ ์ฒด ๊ตฌ์กฐ๋ก ์ ๋ฆฌํ๋ฉด ์ด๋ ์ต๋๋ค.[GC์ ํฐ ํ] โ Mark and Sweep (๋งํน โ ์ ๋ฆฌ) [์์ญ๋ณ ์ ๋ฆฌ ๋ฐฉ์] โ Young Generation : Copying โ Old Generation : Mark and Sweep / Mark and Compact ๋ฉด์ ์์ "GC ๋์ ์๋ฆฌ"๊ฐ ๋ฉ์ธ ์ง๋ฌธ์ผ๋ก ๋์ค๋ฉด Mark and Sweep์ ์ถ๋ฐ์ ์ผ๋ก ๋ต๋ณํ์๊ณ , ํ์ ์ง๋ฌธ์ด ๋ค์ด์ฌ ๋ ์ ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์ฅํ์๋ฉด ๋ฉ๋๋ค!
- Likes
- 1
- Comments
- 2
- Viewcount
- 61
Q&A
Mark and Sweep
์๋ ํ์ธ์, Cola๋!์๋ฃ์ "Mark and Sweep" ํํ์ ๋งํน์ ํตํด ๋นํ์ฑ ๊ฐ์ฒด๋ฅผ ์ ๋ฆฌํ๋ค๋ GC ๋์์ ํฐ ํ๋ฆ์ ํต์นญํ๋ ์๋ฏธ๋ก ์ฌ์ฉํ ๊ฒ์ ๋๋ค. Mark๋ ๋ชจ๋ GC ์๊ณ ๋ฆฌ์ฆ์ ๊ณตํต 1๋จ๊ณ๋ผ, GC์ ํต์ฌ ์๋ฆฌ๋ก ํจ๊ป ์ธ๊ธ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ ์๋ฐํ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ก๋ ์์ญ๋ณ๋ก ๋๋ฉ๋๋ค.Young Generation (Eden โ Survivor): Copying ๋ฐฉ์ (๋ง์ํด ์ฃผ์ ๋ด์ฉ)Old Generation: Mark and Sweep / Mark and Compact
- Likes
- 1
- Comments
- 1
- Viewcount
- 59
Q&A
์ฉ์ด ์ง๋ฌธ
์๋ ํ์ธ์, Cola๋!๋ ํํ ๋ชจ๋ ๊ฐ์ ๊ฐ๋ ์ ๊ฐ๋ฆฌํค๋ ์ ํจํ ํํ์ด๊ณ , ์๋ฏธ์ ์ฐจ์ด๋ ์์ต๋๋ค.Root Space: GC๊ฐ reachability ๋ถ์์ ์์ํ๋ ์ถ๋ฐ์ ์ด ์์นํ ์์ญ์ ๊ฐ๋ฆฌํค๋ ํํGC Root / GC Roots: ๊ฐ์ ๊ฐ๋ ์ ์๋ฌธ ํ์ค ์๋ฃ(Eclipse MAT, JVM ๊ณต์ ๋ฌธ์, Baeldung ๋ฑ)์์ ์์ฃผ ๋ถ๋ฅด๋ ํํ๋ ๋ค ์คํ์ ๋ก์ปฌ ๋ณ์, ์ ์ ๋ณ์, JNI ์ฐธ์กฐ, ํ์ฑ ์ค๋ ๋์ฒ๋ผ "GC๊ฐ traverse๋ฅผ ์์ํ๋ ๊ธฐ์ "์ ์๋ฏธํ๋ฉฐ, ์ด๋ ํํ์ ์ฌ์ฉํ์ ๋ ๋ฌด๋ฐฉํฉ๋๋ค!
- Likes
- 1
- Comments
- 1
- Viewcount
- 40
Q&A
ํธ์ถํ์ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์, Cola๋! ์๋ฃ์ 2,000 / 15,000์ HotSpot JVM์ Tiered Compilation ๊ธฐ๋ณธ๊ฐ์ผ๋ก, -XX:Tier3CompileThreshold, -XX:Tier4CompileThreshold ์ต์ ์ ํด๋นํฉ๋๋ค. ์ด ๊ฐ์ Tiered Compilation์ด ๊ธฐ๋ณธ ํ์ฑํ๋ Java 8 ์ดํ ์ต์ OpenJDK HotSpot๊น์ง ๋์ผํ๊ฒ ์ ์ง๋๊ณ ์์ต๋๋ค. OpenJDK ์์ค ํธ๋ฆฌ์ ํ ์คํธ ์ฝ๋(CheckCompileThresholdScaling.java)์์๋ ๊ฐ์ ๊ฐ์ผ๋ก ๊ฒ์ฆ๋๊ณ ์์ต๋๋ค. ๊ทธ๋์ OpenJDK HotSpot ๊ธฐ์ค์ผ๋ก๋ ๋ฒ์ ์ฐจ์ด๋ฅผ ์ ๊ฒฝ ์ฐ์ง ์์ผ์ ๋ ๋ฉ๋๋ค. ์ง์ ํ์ธํ์๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ํํด ๋ณด์๋ฉด ๋ฉ๋๋ค.java -XX:+PrintFlagsFinal -version | grep CompileThreshold ๋ค๋ฅธ JVM ๋ฒค๋(OpenJ9, GraalVM ๋ฑ)๋ ์ ์ฑ ์ด ๋ฌ๋ผ ์์น๊ฐ ๋ค๋ฅผ ์ ์์ง๋ง, OpenJDK HotSpot ๊ธฐ์ค์ผ๋ก ์ฝ 2,000 / ์ฝ 15,000์ผ๋ก ์ธ์๋์๋ฉด ์ถฉ๋ถํฉ๋๋ค. ์ฐธ๊ณ : https://devblogs.microsoft.com/java/how-tiered-compilation-works-in-openjdk/
- Likes
- 1
- Comments
- 2
- Viewcount
- 55




