Skip to content

Commit 1d89514

Browse files
authored
Merge pull request #270 from Flamme1004K/main
[#1~#7][2๊ธฐ] 1์ฃผ์ฐจ ์งˆ๋ฌธ
2 parents dbf5d39 + 024fee4 commit 1d89514

2 files changed

+114
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ.
2+
3+
## ์ž๋ฐ”์˜ ๊ฐ์ฒด ์†Œ๋ฉธ์ž finalizer์™€ cleaner
4+
5+
- finalizer : ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ณ , ์ƒํ™ฉ์— ๋”ฐ๋ผ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์–ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถˆํ•„์š”ํ•˜๋‹ค.
6+
- cleaner : finalizer๋ณด๋‹ค ๋œ ์œ„ํ—˜ํ•˜์ง€๋งŒ, ์—ฌ์ „ํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ณ , ๋А๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถˆํ•„์š”ํ•˜๋‹ค.
7+
8+
> ์™œ cleaner๋ณด๋‹ค finalizer๊ฐ€ ๋œ ์œ„ํ—˜ํ• ๊นŒ? finalizer์—์„œ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ํ†ต์ œํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ , ์ข…๋ฃŒํ•ด๋ฒ„๋ฆฌ์ง€๋งŒ, cleaner๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ž์‹ ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ํ†ต์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
9+
10+
## ์™œ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?
11+
12+
1. ์ฆ‰์‹œ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.
13+
- finalizer๋‚˜ cleaner๋ฅผ ์–ผ๋งˆ๋‚˜ ์‹ ์†ํžˆ ์ˆ˜ํ–‰ํ• ์ง€๋Š” ์ „์ ์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋‹ฌ๋ ธ๋‹ค.
14+
2. ์ˆ˜ํ–‰ ์—ฌ๋ถ€๋„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
15+
- ์ ‘๊ทผ ํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ถ€ ๊ฐ์ฒด์— ๋”ธ๋ฆฐ ์ข…๋ฃŒ ์ž‘์—…์„ ์ „ํ˜€ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ ๋  ์ˆ˜๋„ ์žˆ๋‹ค.
16+
- ์ฆ‰, ์ƒํƒœ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์—์„œ๋Š” ์ ˆ๋Œ€ finalizer๋‚˜ cleaner์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
17+
3. ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋„ ๋™๋ฐ˜ํ•œ๋‹ค.
18+
- AutoCloseable ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ–ˆ์„๋•Œ๋ณด๋‹ค ์•ฝ 50๋ฐฐ ๋А๋ฆฌ๋‹ค.
19+
4. finalizer๋ฅผ ์‚ฌ์šฉํ•œ ํด๋ž˜์Šค๋Š” finalizer ๊ณต๊ฒฉ์— ๋…ธ์ถœ๋˜์–ด ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค.
20+
- ์ƒ์„ฑ์ž๋‚˜ ์ง๋ ฌํ™” ๊ณผ์ •์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์ด ์ƒ์„ฑ๋˜๋‹ค ๋งŒ ๊ฐ์ฒด์—์„œ ์•…์˜์ ์ธ ํ•˜์œ„ ํด๋ž˜์Šค์˜ finalizer๊ฐ€ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์ˆ˜์ง‘ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.
21+
22+
## ์ด๋ ‡๊ฒŒ ์ง€์–‘ํ•˜๋Š”๋ฐ ์™œ finalizer์™€ cleaner๊ฐ€ ์žˆ๋Š”๊ฑด๋ฐ?
23+
24+
1. ์ž์›์˜ ์†Œ์œ ์ž๊ฐ€ close ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์— ๋Œ€๋น„ํ•œ ์•ˆ์ „๋ง ์—ญํ• 
25+
2. ๋„ค์ดํ‹ฐ๋ธŒ ํ”ผ์–ด๋ฅผ ํšŒ์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋„ค์ดํ‹ฐ๋ธŒ ํ”ผ์–ด๋Š” ์ž๋ฐ” ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์—์„œ ํšŒ์ˆ˜ํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
26+
- ์ฆ‰์‹œ ์ž์›์„ ํšŒ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๋ฉด close ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
27+
28+
## finalizer๋‚˜ cleaner๋ฅผ ๋Œ€์‹ ํ•ด์ค„ ๋ฌ˜์•ˆ์€ ๋ฌด์—‡์ผ๊นŒ?
29+
30+
1. **AutoCloseable์„ ๊ตฌํ˜„ํ•ด์ฃผ๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค ์“ฐ๊ณ  ๋‚˜๋ฉด close ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋ฉด ๋œ๋‹ค.**
31+
32+
2. **AutoCloseable์—์„œ Cleaner๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ, try-with-resources์„ ์‚ฌ์šฉํ•˜์ž.**
33+
34+
35+
## ์ฑ… ์˜ˆ์ œ
36+
37+
import java.lang.ref.Cleaner;
38+
39+
public class Room implements AutoCloseable {
40+
41+
private static final Cleaner cleaner = Cleaner.create();
42+
43+
private static class State implements Runnable {
44+
int numJunkpiles;
45+
46+
State(int numJunkpiles) {
47+
this.numJunkpiles = numJunkpiles;
48+
}
49+
50+
@Override
51+
public void run() {
52+
System.out.println("๋ฐฉ ์ฒญ์†Œ");
53+
numJunkpiles = 0;
54+
}
55+
}
56+
private final State state;
57+
private final Cleaner.Cleanable cleanable;
58+
59+
public Room(int numJunkpiles) {
60+
state = new State(numJunkpiles);
61+
cleanable = cleaner.register(this, state);
62+
}
63+
64+
@Override
65+
public void close() throws Exception {
66+
cleanable.clean();
67+
}
68+
}
69+
70+
public class main {
71+
public static void main(String[] args) throws Exception {
72+
try (Room myRoom = new Room(7)) {
73+
System.out.println("์•ˆ๋…•~");
74+
}
75+
new Room(99);
76+
System.out.println("์•„๋ฌด๋ ด~");
77+
}
78+
79+
๊ฒฐ๊ณผ :
80+
81+
์•ˆ๋…•~
82+
๋ฐฉ์ฒญ์†Œ
83+
์•„๋ฌด๋ ด
84+
85+
86+
87+
88+
89+
90+
91+
92+
93+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
item 1. ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋ผ
2+
- Java8์—์„œ interface๋Š” ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ์ด ๋˜์—ˆ๊ณ , ์™œ ๋ณ€๊ฒฝํ•˜์˜€์„๊นŒ์š”?
3+
4+
item 2. ์ƒ์„ฑ์ž์— ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ๋นŒ๋”๋ฅผ ๊ณ ๋ คํ•˜๋ผ.
5+
- Java์—์„œ ์ƒ์„ฑ์ž๋‚˜, ๋นŒ๋” ํŒจํ„ด, ์ž๋ฐ” ๋นˆ์ฆˆ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
6+
7+
item 3. private ์ƒ์„ฑ์ž๋‚˜ ์—ด๊ฑฐ ํƒ€์ž…์œผ๋กœ ์‹ฑ๊ธ€ํ„ด์ž„์„ ๋ณด์ฆํ•˜๋ผ
8+
- Java Singleton๊ณผ Spring Singleton์˜ ์ฐจ์ด๋Š”?
9+
- Spring์—์„œ๋Š” ์™œ ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์€ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์ด ๋ ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  ์™œ ์“ธ๊นŒ์š”?
10+
11+
item 4. ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ง‰์œผ๋ ค๊ฑฐ๋“  pirvate ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.
12+
- private ๋ฉ”์„œ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผ ํ• ๊นŒ์š”?
13+
14+
item 5. ์ž์›์„ ์ง์ ‘ ๋ช…์‹œํ•˜์ง€ ๋ง๊ณ  ์˜์กด ๊ฐ์ฒด ์ฃผ์ž…์„ ์‚ฌ์šฉํ•˜๋ผ.
15+
- Spring์—์„œ์˜ Dependency Injection์„ ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋– ํ•œ ๋ฐฉ๋ฒ•์„ ์“ฐ๊ณ  ์žˆ๋‚˜์š”?
16+
17+
item 6. ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ”ผํ•˜๋ผ
18+
- String.matches์™€ Pattern.matcher์—์„œ ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ์ƒํ™ฉ์—์„œ ๋ฐ˜๋ณตํ•ด ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ String.matches๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์™œ ์„ฑ๋Šฅ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๊ณ  ํ•˜๋Š” ๊ฑธ๊นŒ์š”? ์™œ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ ๊นŒ์š”?
19+
20+
item 7. ๋‹ค ์“ด ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ํ•ด์ œํ•˜๋ผ.
21+
- GC์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๊ฐ์ฒด์™€ GC์˜ ๋Œ€์ƒ์ด ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

0 commit comments

Comments
ย (0)