π/Java14 [Java] GC λ°©μ JDK 5.0μ΄μμμ μ§μνλ GC λ°©μμλ λ€κ°μ§κ° μλ€. WASλ μλ° μ ν리μΌμ΄μ μνμ μ΅μ μ μ§μ νμ¬ μ νν μ μλ€. 4κ°μ§ GC(κ°λΉμ§ μ½λ ν°) λ°©μ Serial GC (μλ¦¬μΌ μ½λ ν°) Parallel GC (λ³λ ¬ μ½λ ν°) Parallel Compacting GC (Parallel Old GC, λ³λ ¬ μ»΄ν©ν μ½λ ν°) Concurrent Mark-Sweep GC (CMS μ½λ ν°) Garbage First GC (G1 GC) JVM GC λμ μμ μμ½νλ©΄ GC λμμ μλ 3 STEPμΌλ‘ λλ μ§λ€. Heap μμμ μ‘΄μ¬νλ κ°μ²΄λ€μ λν΄ μ κ·Ό κ°λ₯νμ§ νμΈνλ€. GC Rootμμ λΆν° μμνμ¬ μ°Έμ‘°κ°μ λ°λΌκ°λ©° μ κ·Ό κ°λ₯ν κ°μ²΄λ€μ Markνλ κ³Όμ μ μ§ννλ€. Mark λμ§ μμ κ°μ²΄ μ¦, .. 2021. 8. 25. [Java] μΆμ ν΄λμ€ vs μΈν°νμ΄μ€ μΈν°νμ΄μ€ μΈν°νμ΄μ€λ μ€κ³λ λλ λͺ μΈλΌκ³ μκ°ν μ μλ€. λͺ¨λ λ©μλκ° μΆμ λ©μλμ΄κ³ , μΌλ° λ³μλ₯Ό κ°μ§ μ μλ€. μλ° 8 λΆν° default method, static methodλ μ μ κ°λ₯ default ν€μλλ₯Ό μ΄μ©νμ¬ λ©μλ ꡬνμ΄ κ°λ₯. λν μ΄λ₯Ό ꡬννλ ν΄λμ€λ defaultλ©μλλ₯Ό μ€λ²λΌμ΄λ© ν μ μλ€. μΈν°νμ΄μ€κ° λ³κ²½μ΄ λλ©΄, μΈν°νμ΄μ€λ₯Ό ꡬννλ λͺ¨λ ν΄λμ€λ€μ΄ ν΄λΉ λ©μλλ₯Ό ꡬνν΄μΌ νλ λ¬Έμ κ° μλ€. μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μνμ¬ μΈν°νμ΄μ€μ λ©μλλ₯Ό ꡬνν΄ λμ μ μλλ‘ νμλ€. static ν€μλλ₯Ό μ΄μ©νμ¬ λ©μλ ꡬνμ΄ κ°λ₯ μΈν°νμ΄μ€μ static λ©μλλ₯Ό μ μΈν¨μΌλ‘μ¨, μΈν°νμ΄μ€λ₯Ό μ΄μ©νμ¬ κ°λ¨ν κΈ°λ₯μ κ°μ§λ μ νΈλ¦¬ν°μ± μΈν°νμ΄μ€λ₯Ό λ§λ€ μ μκ² λμλ€. λ°.. 2021. 8. 18. [Java] Java SE, Java EE, Java ME μλ° λ°°ν¬ν Java SE, Java EE, Java ME μ°¨μ΄ Java SE(Standard Edition) μλ° μ€ν λ€λ μλμ μ κ°μ₯ 보νΈμ μΌλ‘ μ°μ΄λ μλ° API μ§ν©μ²΄(ν¨ν€μ§)μ΄λ€. Java SEλ Java Software Development Kit(SDK)μΌλ‘ ꡬνλλ€. λμ²΄λ‘ μ²μμ μλ°κ°λ°μ μ λ¬Έν λ μ νλ€. JAVA SE API Applet AWT RMI JDBC Swing Collections Xml binding JavaFX (Merged to Java SE 8) Java 8 Collections Streaming API Java 9 Reactive Streams API Java 9 HTTP/2 API Java EE(Enterprise Edition) Java SE μ€νκΈ°λ°μΌλ‘ μ.. 2021. 8. 18. [Java] λ³μμ scopeμ static scope νλ‘κ·Έλ¨μμμ μ¬μ©λλ λ³μλ€μ μ¬μ© κ°λ₯ν λ²μλ₯Ό κ°μ§λ€. κ·Έ λ²μλ₯Ό λ³μμ μ€μ½νλΌκ³ νλ€. λ³μκ° μ μΈλ λΈλμ΄ κ·Έ λ³μμ μ¬μ©λ²μμ΄λ€. public class ValableScopeExam{ int globalScope = 10; // μΈμ€ν΄μ€ λ³μ public void scopeTest(int value){ int localScope = 10; System.out.println(globalScope); System.out.println(localScope); System.out.println(value); } } ν΄λμ€μ μμ±μΌλ‘ μ μΈλ λ³μ globalScope μ μ¬μ© λ²μλ ν΄λμ€ μ 체 μ΄λ€. 맀κ°λ³μλ‘ μ μΈλ int value λ λΈλ λ°κΉ₯μ μ‘΄μ¬νκΈ°λ νμ§λ§, λ©μλ μ μΈλΆμ.. 2021. 8. 11. [Java] κ°λΉμ§ 컬λ μ (Garbage Collection) C/C++ νλ‘κ·Έλλ°μ ν λ λ©λͺ¨λ¦¬ λμ(Memory Leak)λ₯Ό λ§κΈ° μν΄ κ°μ²΄λ₯Ό μμ±ν ν μ¬μ©μνμ§ μλ κ°μ²΄μ λ©λͺ¨λ¦¬λ₯Ό νλ‘κ·Έλλ¨Έκ° μ§μ ν΄μ ν΄μ£Όμ΄μΌ νμ§λ§, JAVAμμλ JVM(Java Virtual Machine)μ΄ κ΅¬μ±λ JRE(Java Runtime Environment)κ° μ 곡λλ©°, κ·Έ κ΅¬μ± μμ μ€ νλμΈ Garbage Collection(μ΄ν GC)μ΄ μλμΌλ‘ μ¬μ©νμ§ μλ κ°μ²΄λ₯Ό νκ΄΄νλ€. GCμ λν΄μ μμ보기 μ μ 'stop-the-world'λΌλ μ©μ΄λ₯Ό μμμΌνλ€. 'stop-the-world'λ, GCλ₯Ό μ€ννκΈ° μν΄ JVMμ΄ μ ν리μΌμ΄μ μ€νμ λ©μΆλ κ²μ λλ€. μ΄λ€ GC μκ³ λ¦¬μ¦μ μ¬μ©νλλΌλ 'stop-the-world'λ λ°μνκ² λλλ°, λκ°μ κ²½μ° GC νλμ.. 2021. 8. 11. [Java] λλ€μ λλ€μ(Lambda Expression) ν¨μμ νλ‘κ·Έλλ° κΈ°λ²μΌλ‘ 'y = f(x)' ννμ ν¨μλ‘ κ΅¬μ±λ νλ‘κ·Έλλ° κΈ°λ²μ΄λ€. μ¦, λλ€μμ ν¨μλ₯Ό νλμ μ(expression)μΌλ‘ ννν κ²μ΄λ€. ν¨μλ₯Ό λλ€μμΌλ‘ νννλ©΄ λ©μλμ μ΄λ¦μ΄ νμ μκΈ° λλ¬Έμ, λλ€μμ μ΅λͺ ν¨μ(Anonymous Function)μ ν μ’ λ₯λΌκ³ λ³Ό μ μλ€. μλ° 8λΆν° μ§μνλ©° μλ°λ λλ€μμ ν¨μμ μΈν°νμ΄μ€μ μ΅λͺ ꡬν κ°μ²΄λ‘ μ·¨κΈνλ€. 'λλ€μ → 맀κ°λ³μλ₯Ό κ°μ§ μ½λ λΈλ‘ → μ΅λͺ ꡬν κ°μ²΄' μ΅λͺ ν¨μ(Anonymous Function) : ν¨μμ μ΄λ¦μ΄ μλ ν¨μλ‘, μ΅λͺ ν¨μλ€μ λͺ¨λ μΌκΈ κ°μ²΄μ΄λ€. μΌκΈ κ°μ²΄μΈ ν¨μλ λ³μμ²λΌ μ¬μ©κ°λ₯νλ©° λ§€κ° λ³μλ‘ μ λ¬μ΄ κ°λ₯νλ λ±μ νΉμ§μ κ°μ§κ³ μλ€. λ³μ.. 2021. 8. 10. [Java] μ€νΈλ¦Ό Stream κ°λ μ€νΈλ¦Όμ λ°λ³΅μ μ€νΈλ¦Όμ 컬λ μ (λ°°μ΄ ν¬ν¨)μ μμλ₯Ό νλμ© μ°Έμ‘°ν΄μ λλ€μμΌλ‘ μ²λ¦¬ν μ μλ λ°λ³΅μμ΄λ€. λλ€μ, μ€νΈλ¦Ό λ λ€ μλ° 8λΆν° μ¬μ© κ°λ₯ 8μ΄μ μλ Iteratorλ₯Ό μ¬μ©ν¨ νΉμ§ 1. λλ€μμΌλ‘ μμ μ²λ¦¬ μ½λλ₯Ό μ 곡νλ€. μ€νΈλ¦Όμ΄ μ 곡νλ λλΆλΆμ μμ μ²λ¦¬ λ©μλλ ν¨μμ μΈν°νμ΄μ€ 맀κ°νμ μ κ°μ§λ€. 맀κ°κ°μΌλ‘ λλ€μ λλ λ©μλ μ°Έμ‘°λ₯Ό λμ ν μ μλ€. 2. λ΄λΆ λ°λ³΅μλ₯Ό μ¬μ©νλ―λ‘ λ³λ ¬ μ²λ¦¬κ° μ½λ€. μΈλΆ λ°λ³΅μ(ex. Iterator) - κ°λ°μκ° μ½λλ‘ μ§μ 컬λ μ μμλ₯Ό λ°λ³΅ν΄μ μμ²νκ³ κ°μ Έμ€λ μ½λ ν¨ν΄ λ΄λΆ λ°λ³΅μ - κ°λ°μ μ½λκ° λλ€μμ΄λκ³ , 컬λ μ μ λ΄λΆμ μΌλ‘ μμλ€μ λ°λ³΅νλ μ€νΈλ¦Όμ νμ©ν΄μ λλ€μμ μμλ§λ€ μ μ©μν΄. - 컬λ μ λ΄λΆμμ μμλ€μ λ°λ³΅.. 2021. 7. 28. [Java] μ λ€λ¦(Generic) κ°λ ν΄λμ€ λ΄λΆμμ μ¬μ©ν λ°μ΄ν° νμ μ μΈλΆμμ μ§μ νλ κΈ°λ²μ΄λ€. μ νμν κΉ? 1. μ€λ³΅λλ μμ€λ₯Ό νλλ‘ λ¬Άμ΄ μμ€μ½λμ μ¬μ¬μ©μ±μ κ·Ήλν νκΈ° μν΄μ λ°μ΄ν° νμ λ³λ‘ ν΄λμ€λ₯Ό μμ±ν νμ μμ΄ νλμ ν΄λμ€μμ λ°μ΄ν° νμ λ§ λ°κΏ 쑰립νλ― μ½λ μ¬νμ©μ΄ κ°λ₯νλ€. 2. κ°μ²΄ μμ±μ μ¬μ©νλ €κ³ νλ λ°μ΄ν°νμ μ λν μ νμ μ€ μ μλ€. ν¨κ³Ό → μ»΄νμΌ νμμ νμ 체ν¬λ₯Ό νκΈ° μν¨μ΄λ νμ μΊμ€ν (νλ³ν)μ μ κ±°νμ¬ νλ‘κ·Έλ¨ μ±λ₯ ν₯μ → νλ³νμ΄ νμμκ³ , νμ μμ μ±μ΄ 보μ₯λλ€. extends T(μν κ²½κ³), ? super T(νν κ²½κ³), ?(μμΌλ μΉ΄λ) λ°μ΄ν° νμ μ μ ννκ² λλ©΄ μ»μ μ μλ μ΄μ μ μμ κ΄κ³μμ μλ€. μμ κ΄κ³μμ μμμ λΆλͺ¨μ λͺ¨λ κ²μ κ°μ Έλ€ μ¬μ©ν μ μλ€.. 2021. 7. 28. [Java] μλ° κ°μ λ¨Έμ (Java Virtual Machine) JVM(Java Virtual Machine) Javaλ‘ κ°λ°ν νλ‘κ·Έλ¨μ μ€ννκΈ° μν κ°μλ¨Έμ . μλ° κ°μ λ¨Έμ μ λ»νλ λ§λ‘ λ°μ΄νΈμ½λλ₯Ό μ€ννλ 주체μ΄λ€. μ΄μ체μ μμμ λμνλ―λ‘ νλ«νΌμ λ 립μ μΌλ‘ Java νλ‘κ·Έλ¨μ μ€νν μ μλ€. νλ‘κ·Έλ¨ λ©λͺ¨λ¦¬λ₯Ό κ΄λ¦¬νκ³ μ΅μ ννλ κ² λ¬Όλ¦¬μ μΈ μ€μ μ κΈ°κ³κ° μλλΌ μΆμμ μΈ μ₯μΉμ΄λ€. μλ° μ ν리μΌμ΄μ μ ν΄λμ€ λ‘λ(Class Loader)λ₯Ό ν΅ν΄ μ½μ΄ λ€μ¬μ μλ° APIμ ν¨κ» μ€ννλ κ² μλ° μ½λλ₯Ό μ€ννκΈ° μν΄μλ μλ°μμ javac λͺ λ Ήμ ν΅ν΄ λ°μ΄νΈμ½λ(.class)λ₯Ό λ§λ€κ³ , λ°μ΄νΈμ½λλ₯Ό JVMμ΄ μΈν°νλ¦¬ν° λ°©μμΌλ‘ κΈ°κ³μ΄λ‘ λ²μνλ©° μ€ννλ€. JVM ꡬμ±μμ 1. Class Loader JVMμ λ°νμμμ μ²μμΌλ‘ ν΄λμ€λ₯Ό μ°Έμ‘°ν λ ν΄λΉ.. 2021. 7. 28. μ΄μ 1 2 λ€μ