JAVA14 인터페이스, 추상클래스 Abstract 와 Interface의 공통점 선언만 가능하고, 직접 구현이 불가능하다. new 연산을 할 수 없으며 상속받은 자만이 new 연산이 가능하다. 구현이 반드시 필요하다. Interface 인터페이스는 구현 객체들이 동일한 동작 할 수 있는 것을 보장한다. 자바의 다형성을 극대화하여 개발 코드의 수정을 줄이고 프로그램 유지보수성을 높이기 위해 사용한다. 밑 그림의 역할을 한다. 다중 상속이 가능하다. 장점 개발 시간을 단축 할 수 있다. 규약만 정해두어 각자의 부분만 따로 나눠서 작성된 코드를 컴파일 할 수 있다. 표준화가 가능하다 클래스의 기본틀을 제공하여 개발자들에게 정형화된 개발을 강요할 수 있다. 서로 관계 없는 클래스들에게 관계를 맺어 줄 수 있다. 코드의 종속성을 줄이고 유지보수성.. JAVA 2021. 5. 16. 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. 가비지 콜렉터의 종류 ※ GC 간단 정리 처음 생성된 객체는 Eden 영역에 할당. Eden 영역이 꽉차면 Survivor 0,1 둘 중에 빈 공간이 아닌 곳으로 이동한다. Survivor 영엑에 있는 객체가 꽉 찰 때 다시 GC의 객체가 사용중인지 아닌지 심사받고 다른 Survivor 영역으로 이동한다. 그리고 aging을 한다. old 영역으로 이동한다. Survivor 영역의 크기보다 큰 경우. aging이 어느정도 되는 경우. GC의 종류 Major GC Old,Perm 영역에서 발생하는 GC Minor GC Young 영역에서 발생하는 GC Pull Gc 메모리 전체를 대상하는 GC 각 GC의 종류에 따라 성능에 크게 영향을 줍니다. GC를 진행하는 방법은 총 5가지가 있다. GC 방식 1. Serial Collec.. JAVA 2021. 5. 3. Garbage Collector GC의 동작원리 및 언에 작동하는지 ※ Stack 과 Heap 영역 Stack 영역: 정적으로 할당한 데이터영역. 원시 타입 데이터가 값과 함께 할당, Heap 영역에 생성된 Object 타입의 데이터의 참조 값 할당하는 영역. Unreachable Obejct Heap 영역: 동적으로 할당한 메모리 영역 ( new ) 모든 Object 타입의 데이터가 할당되어 있고, Heap영역의 Object를 가르키는 참조변수가 Stack에 할당. Reachable Object Garbage Collector란 사용되고 있지 않은 메모리를 알아서 해제해주는 역할을 한다. c와C++에서는 개발자가 직접 메모리를 해제한다. 하지만 자바는 GC가 대신 안쓰는 메모리를 찾아서 해제해준다. Garbage Collector 장.. JAVA 2021. 4. 25. 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. 이전 1 2 3 다음