java8 orElseGet 과 orElse 차이 What Optional의 쓰이는 메소드로서 체이닝 형식으로 사용되어 질 수 메소드이다. 두개의 함수 모두 해당 값이 존재하지 않을 때 라는 의미를 갖는 메소드이다. Optional name = Optional.ofNullable("엘리자베스"); name.~~~ ❓Why 호출로 인해 메모리 상에 이슈가 발생할 수 있다. 혹은 함수를 호출하는데 응답시간에 지연이 생긴다. 결과적으로 createDefault의 호출 여부에 따라 다르다는 것을 알 수 있다. 예제 코드 package com.programmers.objectstudy; import java.time.LocalDateTime; import java.util.Optional; public class Main { public static void m.. JAVA 2022. 8. 25. static ※ JVM 메모리 구조 JVM은 크게 Gabage Collector, Execution Engine, Class Loader, Runtime Data Area 4가지 영역으로 이루어진다. .java -> (javaC) -> .class -> javaByteCode로 컴파일 된다. 이렇게 컴파일된 ByteCode들은 Class Loader가 메모리가 할당된 Runtime Data Area로 코드들을 적재시킨다. Runtime Data Area은 5가지로 구성된다. Method Area Static Area라고 한다. 초기 로드시 필요한 정보들 즉 필요한 패키지 클래스, 인터페이스, 상수, static변수,final 변수, 클래스 멤버 변수 등 로드되고 난 후 메모리에 항상 상주하고 있는 영역이다. Heap.. JAVA 2021. 5. 4. Reflection Reflection 구체적인 클래스 타입을 알지못해도, 클래스의 메소드,타입,변수들을 접근 가능하게 해주는 Java API이다. public class Car() { public void straight() { sout("car!") } public static void main(String[] args) { Object car = new Car(); // 에러 발생 x. car.straight(); // Error! } } Object 에 Car라는 인스턴스를 담을 수 있지만 사용가능한 메소드는 Object 의 메소드와 필드만 사용가능하므로 오류가 발생한다. 이런식으로 구체 타입을 모를 때 사용하는 것이 리플렉션 이다. 컴파일 시점에는 오류가 나지 않지만, 런타입 시점에서 나타내는 오류 이다. 즉 런타.. JAVA 2021. 4. 16. 자바의 compile 과정 사전 지식 인터프리터와 컴파일러의 차이 인터프리터 컴파일러 한문장씩 읽고 바로 기계어 변환 후 실행 모든 소스코드를 기계어 파일로 변환하고 실행. python,php.... c,c++,java... 한줄씩 읽어 기계어로 변환 후 실행하는 면에서 빨라보이지만 만들어둔 실행 파일만 읽으면 되므로 실행속도 더 빠르다. JVM 구조 전체적인 흐름 : .java -> (javaC) ->.class (JVM이 이해할 수 있는 중간 언어)(바이트코드)-> 기계어 변환 요약 : class Loader를 통해 바이트 코드를 JVM내로 로드하고 Runtime data Area로 거쳐 Execution Engine으로 들어가 바이트 코드로 변환. (2가지 방식 JIT,Interpreter) Compile 과정 .java를 .. JAVA 2021. 4. 4. JVM 구조와 버전에 따른 변경 JVM 구조 Class Loader .java -(javac가 컴파일)-> .class - (jvm) -> Runtime Data Area 로 적재. Execution Engine classLoader에 의해 메모리에 적재된 클래스(바이트콛)들을 기계어로 변경하여 명령어 단위로 실행하는 것. 명령어 실행 방식 2가지 인터프리터 : 명령어를 하나씩 수행.(기본적 방식,전체 수행 느림 하지만 명령어 하나의 동작 빠름) Just In Time compiler(JIT) : 바이트 코드 -> 네이티브코드로 변환 후 인터프리팅하지 않으며 네이티브 코드로 실행 (실행 동작은 빠르지만 컴파일하는데 시간이 많이 소요.) Garbage Collector GC는 Heap메모리 영역에 생성된 객체들 중 참조되지 않는 객체들을.. JAVA 2021. 3. 28. 이전 1 2 다음