์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ์์
- ๋น์ผ๊ฐ์ฒด์์ฑ
- ์๋ฐ์์
- ๋ฐ์ฉ๋ ์ค๊ตญ์ด
- builder null
- ์๋ฐ์ฐ๋ ๋
- enum ์์ฑ์ ์ ๊ทผ ์ ํ์
- mysql
- index skip scan
- item15
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฒฉ๋ฆฌ์์ค
- assert.notnull
- index full scan
- ์์ดํ 15
- ์ํฐ๋ ๊ฐ๋ฐ์ํ์ฌ
- SVN
- Item6
- ์๋ฐ๋ผ์ด๋ธ์คํฐ๋
- ์ํฐ๋ ๋ณ์ข ๊ฐ๋ฐ์
- ์ธ๋ฑ์คํ์ค์บ
- ์๋ผ์คํฑ์์น๋ฉ์ธ์ง์ฉ๋
- ์ดํํฐ๋ธ์๋ฐ
- Hikari Connection Pool
- ์ธ๋ฑ์ค์คํต์ค์บ
- InnoDB์ํคํ ์ฒ
- ์๋ฐ
- hikari cp ์ค์
- mysql์ํคํ ์ฒ
- effectiveJava
- ์๋ฐ์์์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ๋ ์ด์
- Today
- Total
โ๐ป๊ธฐ๋กํ๋ ๋ธ๋ก๊ทธ
JVM์ Garbage Collector ๋ณธ๋ฌธ
JVM(Java Virtual Machine)
- ์ด์์ฒด์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ ๊ทผํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ ์ด์ ๊ฐ์ ๋จธ์
- Garbage Collector ์ํ
- ๋์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์์ญ(Heap) ์ค ์ฌ์ฉํ์ง ์๋ ์์ญ์ ์ฒดํฌํ์ฌ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ด๋ค.
- GCํ์ ๋ฐฐ๊ฒฝ์ ๋ ๊ฐ์ง ์ ์ ์กฐ๊ฑด
- ๋๋ถ๋ถ์ ๊ฐ์ฒด๋ ๊ธ๋ฐฉ ์ ๊ทผ unreachable ์ํ๊ฐ ๋๋ค.
- ์ค๋๋ ๊ฐ์ฒด์์ ์ ์ ๊ฐ์ฒด๋ก์ ์ฐธ์กฐ๋ ์์ฃผ ์ ๊ฒ ์กด์ฌํ๋ค.
- GCํ์ ๋ฐฐ๊ฒฝ์ ๋ ๊ฐ์ง ์ ์ ์กฐ๊ฑด
- ๋์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์์ญ(Heap) ์ค ์ฌ์ฉํ์ง ์๋ ์์ญ์ ์ฒดํฌํ์ฌ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ์์ญ
class Person {
int id;
String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
}
public class PersonBuilder {
private static Person buildPerson(int id, String name) {
return new Person(id, name);
}
public static void main(String[] args) {
int id = 23;
String name = "John";
Person person = null;
person = buildPerson(id, name);
}
}
Heap
- ๋์ ์ผ๋ก ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ๋ชจ๋ objectํ์ ์ ๋ฐ์ดํฐ๊ฐ ํ ๋น
- heap์์ญ์ object๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ ๋ณ์๊ฐ stack์ ํ ๋น
Garbage Collector๋์
- gc๊ฐ stack์ ๋ชจ๋ ๋ณ์๋ฅผ ์ค์บํ๋ฉด์ ๊ฐ๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋์ง ์ฐพ์์ ๋งํน
- reachable object๊ฐ ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ฒด๋ ์ฐพ์์ ๋งํน
- ๋งํน๋์ง ์์ ๊ฐ์ฒด heap์์ ์ ๊ฑฐ → sweap
-> 1,2๋ฒ ๋์์ Mark, 3๋ฒ ๋์์ Sweap์ด๋ผ๊ณ ํ๋ค.
GC ๋์ ์์
heap์ ๊ตฌ์กฐ
New generation = Eden + S0(Survival0), S1(Survival1) , old generation
- ์๋ก์ด ๊ฐ์ฒด Eden์์ญ์ ์์ฑ. Eden์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐจ๋ฉด GC ๋์ ์์
์ด๋ ๋ฐ์ํ๋ GC๋ฅผ Minor GC๋ผ ํจ.
GC๊ฐ ๋์ํ๋ฉด์ Mark, Sweap ๋์์ด ๋ฐ์ํ๋ฉฐ, Eden์์ ์ด์๋จ์ ๊ฐ์ฒด๋ S0์ผ๋ก ์ด๋
GC ์ข ๋ฅ
1. Serial GC
- cpu์ฝ์ด๊ฐ 1๊ฐ๋ง ์์ ๋ ์ฌ์ฉํ๋ ๋ฐฉ์
- gc๋ฅผ ์ฒ๋ฆฌํ๋ ์ค๋ ๋๊ฐ 1๊ฐ
- mark-compact collection ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ
- mark-compact collection ์๊ณ ๋ฆฌ์ฆ ๋์ ์์
- mark phrase
- GC๊ฐ ๋์ํ๋ฉด์ ๋งํน๋ ์ด์์๋ ๊ฐ์ฒด๋ฅผ ์ฐพ๋๋ค.
- compaction phrase
- ์์ ๋์์ ์๋ ์ฝ๋์ฒ๋ผ ํํ๋ ์ ์๋ค.
- mark phrase
- mark-compact collection ์๊ณ ๋ฆฌ์ฆ ๋์ ์์
for each root variable r
mark (r);
compact ();
2. Parallel GC
- Serial GC๋ณด๋ค ์ฒ๋ฆฌ์๋ ๋น ๋ฆ
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ๊ณ ์ฝ์ด์ ๊ฐ์๊ฐ ๋ง์ ๋ ์ฌ์ฉ
- gc๋ฅผ ์ฒ๋ฆฌํ๋ ์ค๋ ๋ ์ฌ๋ฌ ๊ฐ
stop-the-world
GC ์คํ์ ์ํด JVM์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ง
stop-the-world ๋ฐ์ ์ ์ค๋ ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ค๋ ๋๋ ๋ชจ๋ ์์ ์ ๋ฉ์ถ๋ค.
3. Concurrent Mark Sweap GC
- stop-the-world๋ฅผ ์ค์์ผ๋ก์ ์๋ต์ด ๋นจ๋ผ์ผ ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ํฉ
- gc์์ ์๋ฃ ์ดํ์ ์ค๋จํ ์์ ๋ค์ ์์.
- gc๋ฅผ ์คํํ๊ธฐ ์ํด jvm์ ์ดํ๋ฆฌ์ผ์ด์ ์คํ์ ๋ฉ์ถ๋ ๊ฒ
4. G1 GC
Eden + S0(Survival0), S1(Survival1) , old generation์ ํ๋์ ๋ง๋ ๋ชจ์์ผ๋ก ๋ณด์๋ค๋ฉด G1GC์์๋ ๊ฐ ์์ญ์ region์ผ๋ก ๋๋๋ค.
GC๋์ ์ Eden Space๋ง ์ฒดํฌํ์ฌ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ
[์ฐธ๊ณ ]
๊ฐ๋น์ง ์ปฌ๋ ์ (GC)์ ์๋ฆฌ์ ์ข ๋ฅ
'Language > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๊ท ํํ ์ Pattern ๊ฐ์ฒด์ ์์ฑ ๋น์ฉ์ ์ค์ด์ (0) | 2023.02.19 |
---|---|
Annotation ์ ๋ ธํ ์ด์ (1) | 2021.02.04 |
Enum (0) | 2021.01.28 |
Thread - ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ (0) | 2021.01.22 |
์์ธ์ฒ๋ฆฌ (0) | 2021.01.14 |