Java μ μΌλ°μ μΈ λ¬Έμ μ€ νλλ λμ λ©λͺ¨λ¦¬ μ¬μ©λμΌλ‘ μΈν΄ μ±λ₯, μΆ©λμ΄ λ°μν μ μλ€κ³ νλ€.
μ΅μ ν λ° λ©λͺ¨λ¦¬ μ¬μ©λ κ°μλ₯Ό μν λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄λ³΄μ
1. Primitive type(μμνμ ) μ μ¬μ©νμ.
μ°Έμ‘°νμ λ³΄λ€ μμνμ μ μ¬μ©νλ€. μμνμ μ μ¬μ©νλ©΄ κ°μ²΄ μμ± μ€λ²ν€λλ₯Ό λ°©μ§νμ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μλ€.
+ λν μμνμ μ μ€ν λ©λͺ¨λ¦¬ μμ λ°λ‘ μ½κ³ , μ°Έμ‘°νμ μ μ€ν λ©λͺ¨λ¦¬μμ ν λ©λͺ¨λ¦¬μ μμΉλ₯Ό ꡬν΄μ¨ λ€μμ λ€μ ν λ©λͺ¨λ¦¬μ κ°μ κ°μ μ½μ΄μμΌ ν΄μ μ±λ₯μ μ 리νλ€.
2. λΆνμν κ°μ²΄ μμ± νμ§λ§μ.
String s = "μ μ μ°"+" μ
λλ€";
ν΄λΉ μ½λ νμ€μ "μ μ μ° μ λλ€" μ λν μ λ¬Έμμ΄ κ°μ²΄λ₯Ό λ§λλλ€.
λμ StringBuilder λ₯Ό μ¬μ©νμ¬ λ¬Έμμ΄μ μΆκ°νκ³ κ° μ°κ²°μ λν΄ μ κ°μ²΄λ₯Ό λ§λ€μ§ μλλ‘ νλ€.
StringBuilder sb = new StringBuilder();
sb.append("μ μ μ°");
sb.append(" μ
λλ€");
Stirng s = sb.toString();
3. μ§μ° μ΄κΈ°ν μ¬μ©
private List<String> myList;
public List<String> getMyList(){
if(myList == null){
myList = new ArrayList<>();
}
return myList;
}
ν΄λμ€κ° λ‘λλ λ myList κ°μ²΄λ₯Ό μ΄κΈ°ννμ§ λ§κ³ μ§μ° μ΄κΈ°νλ₯Ό μ¬μ©νμ¬ μ€μ λ‘ νμν λκΉμ§ κ°μ²΄ μμ±μ μ°κΈ°νλ€.
μ΄λ κ² νλ©΄ λΆνμν κ°μ²΄ μμ±μ λ°©μ§νμ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μλ€.
4. 컬λ μ λμ λ°°μ΄ μ¬μ©
String[] array = new String[1000];
for (int i = 0; i< 1000; i++){
array[i] = "Item" + i;
}
ArrayList λ ν¬κΈ°κ° κ°λ³μ μΌλ‘ λ³νκΈ° λλ¬Έμ νμ€ λ°°μ΄λ³΄λ€λ λ리μ§λ§ λ°°μ΄μμ λ§μ μ‘°μμ΄ νμν κ²½μ° μ μ©νκ² μ¬μ©ν μ μλ€.
νμ§λ§ 컬λ μ μ ν¬κΈ°λ₯Ό 미리 μκ³ μμ λ κ°λ¨ν λ°°μ΄μ μ¬μ©νλ©΄ λμ ν¬κΈ° μ‘°μ λ° μΆκ° λ©μλμ μ€λ²ν€λλ₯Ό λ°©μ§νμ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μλ€.
5. κ°μ²΄ μ¬μ¬μ©
List<String> tempList = new ArrayList<>();
for(int i=0; i<1000; i++){
tempList.add("νλͺ© "+i);
}
tempList.clear(): // μ¬μ¬μ©μ μν΄ λͺ©λ‘μ μ§μλλ€.
for(int i=0; i<1000; i++){
tempList.add("item" +i);
}
κ° λ£¨ν λ°λ³΅μ λν΄ μ ArrayListλ₯Ό μμ±νλ λμ λμΌν κ°μ²΄λ₯Ό μ¬μ©ν λλ§λ€ μμ νμ¬ μ¬μ¬μ©νλ€.
μ΄λ κ² νλ©΄ μμ±λλ κ°μ²΄ μλ₯Ό μ€μ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μλ€.
6. μ μ ν©ν 리 λ©μλ μ¬μ©
public static List<String> getList(){
return new ArrayList<>(1000)
}
μ ArrayListλ₯Ό λ§λλ λμ μ μ ν©ν°λ¦¬ λ©μλλ₯Ό μ¬μ©νμ¬ μ§μ λ μ΄κΈ° μ©λ ΉμΌλ‘ ArrayListλ₯Ό λ§λ€ μ μλ€.
μ΄λ κ² νλ©΄ μμλ₯Ό μΆκ°ν λ ArrayListμ ν¬κΈ°λ₯Ό μ‘°μ ν΄μΌ νλ νμλ₯Ό μ€μ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μλ€.
7. Flyweight μ¬μ©
Map<String, String> map = new HashMap<>();
String key = "myKey";
String value = "myValue";
map.put(key,value);
String anotherValue = map.get(key);
νλΌμ΄μ¨μ΄νΈ ν¨ν΄μ κ°μ²΄λ₯Ό 곡μ νμ¬ λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ΄λ λμμΈ ν¨ν΄μ λλ€.
μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€ ν κ°λ§ κ°μ§κ³ μ¬λ¬ κ°μ κ°μ μΈμ€ν΄μ€λ₯Ό μ 곡νκ³ μΆμ λ μ¬μ©νλ€.
private static final HashMap<String, Circle> circleMap = new HashMap<>();
public static Shape getCircle(String color) {
Circle circle = (circle) circleMap.get(color);
if(circle == null) {
circle = new Circle(coloer);
circleMap.put(color,cicle);
}
return circle;
}
getCircle λ‘ κ°μ²΄κ° μμ λλ CircleMap μμ get νμ¬ return νκ³ μμ λλ μλ‘ μμ±νλ€.
? μ΄κ²μ... μ±κΈν€ ν¨ν΄κ³Ό μ μ¬νλ€. λ€λ₯Έμ μ΄ λ¬΄μμΌκΉ?
μμ μ½λμ²λΌ Circle μ μμμ΄ λ°λ λλ§λ€ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νλ€. λν κ°μ²΄μ μμμ λ°κΏ μ μλ€.
νμ§λ§ μ±κΈν€ ν¨ν΄μ λ¨ νλμ Circle μ λ§λ λ€. λ°λΌμ λ§λ€μ΄μ§ λ¨ νλμ Circle μ μμ λ°κΏμΌ νλ€λ λ»μ΄λ€.
8. intern() λ°©λ² μ¬μ©
λ¬Έμμ΄ λΉκ΅μλ equals() νν μ¬μ©νλ€. κ·Έλ μ§λ§ μλλ λ©λͺ¨λ¦¬ ν₯μμ μν΄ == μ°μ°μμ μ¬μ©μ΄ νμν λκ° μλ€.
νμ§λ§ == μ°μ°μλ κ°μ λ©λͺ¨λ¦¬λ₯Ό μ°Έμ‘°νλκ°λ₯Ό λΉκ΅νκΈ° λλ¬Έμ μ€μ λ‘ "A" μ new String("A") λ false κ° λλ€.
κ·Έλ΄ λ intern() μ μ¬μ©νλ€.
intern() λ©μλλ String pll μμ 리ν°λ΄ λ¬Έμμ΄μ΄ μ΄λ―Έ μ‘΄μ¬νλμ§ μ²΄ν¬νκ³ μ‘΄μ¬νλ©΄ ν΄λΉ λ¬Έμμ΄μ λ°ννκ³ μλλ©΄ 리ν°λ΄μ String pool μ λ£μ΄μ€λ€.
String literal = "μ μ μ ";
String object = new String("μ μ μ ");
String intern = object.intern();
literal == object // false
literal.equlas(object) // true
literal == intern // true
literal.equals(intern) //true
9. λΆνμν μ€ν λ°μ± νΌνκΈ°
int i = 10;
Integer j = Integer.valueOf(i);
AutoBoxing μ κΈ°λ³Έ μ νμ ν΄λΉ κ°μ²΄ λνΌλ‘ μλμΌλ‘ λ³ννλ€.
λΆνμν κ°μ²΄ μμ± λ° λ©λͺ¨λ¦¬ μ€λ²ν΄λκ° λ°μν μ μκΈ° λλ¬Έμ
valueOf() λ©μλλ₯Ό μ¬μ©νμ¬ μ€ν λ°μ±μ νΌνκ³ κΈ°μ‘΄ κ°μ²΄λ₯Ό μ¬μ¬μ© νλ€.
10. finalize() λ©μλλ μ£Όμν΄μ μ¬μ©νμ
public class MyClass {
privet byte[] data = new byte[1000];
@Override
protected void finalize() throws Throwable{
super.finalize();
// 리μμ€ μ 리
}
}
finalize() λ©μλλ κ°μ²΄κ° λ μ΄μ μ°Έμ‘°λμ§ μμ λ κ°λΉμ§ 컬λ ν°μ μν΄ νΈμΆλλ Object ν΄λμ€μ λ©μλμ΄λ€.
κ·Έλ¬λ 리μ€μ μ 리λ₯Ό μν΄ finalize() λ₯Ό μ¬μ©νλ κ²μ μμΈ‘ν μ μκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ λμλ‘ μ΄μ΄μ§ μ μλ€.
λμ try-with-resources λ₯Ό μ¬μ©νκ±°λ Auto Closeable μΈν°νμ΄μ€λ₯Ό ꡬννμ¬ λ¦¬μμ€κ° μ λλ‘ μ 리λλλ‘ νλ κ²μ΄ μ’λ€.
try-with-resources λ₯Ό μ¬μ©νλ©΄ κ°λΉμ§ 컬λ ν°κ° finalize() λ₯Ό νΈμΆνμ§ μκ³ λ FileWriter κ°μ²΄κ° μ λλ‘ λ«νκ³ λ¦¬μμ€κ° μ 리λλμ§ νμΈν μ μλ€. μ΄λ κ² νλ©΄ κ°λΉμ§ 컬λ ν°κ° μμ§ν΄μΌ νλ κ°μ²΄ μλ₯Ό μ€μ¬ λ©λͺ¨λ¦¬λ₯Ό μ μ½ν μ μλ€.
μ΄ λͺ¨λ κ²μ
λ©λͺ¨λ¦¬ μ΅μ νκ° μ½λ κ°λ μ±μ΄λ μ μ§ κ΄λ¦¬μ±μ ν¬μμν€λ©΄μ μ΄λ£¨μ΄μ§μ§ μλκ²μ΄ λμ± μ€μνλ€!
μΆμ²
https://medium.com/javarevisited/basic-memory-saving-techniques-for-java-programming-6677a7237a69
'π WEB > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LocalDate isEquals(), equals() (0) | 2023.12.14 |
---|---|
μ λ€λ¦ DTO (0) | 2023.03.14 |
νλ©΄μ μνλ μλ¬λ©μμ§ λ³΄λ΄κΈ° (1) | 2023.03.09 |
λλ§ μ΄λ €μ΄ μμΈμ²λ¦¬ (0) | 2022.05.19 |
Enum Type μμ Function Interface νμ© (0) | 2022.04.01 |