[JAVA] JVM 메모리 구조와 라이프 사이클
2022. 8. 2. 19:10
Back-End/Java & Spring
JVM 메모리 구조와 라이프 사이클 JVM (Java Virtual Machtine) JAVA와 OS 사이에서 중개자 역할 OS에 구애 받지 않고 프로그램을 실행하도록 도와준다. 가비지 컬렉터를 통해 자동으로 메모리 관리 스택VM 기반으로 동작 JVM 메모리 구조 1) Class Loader JVM 내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 런타임 시에 동적으로 클래스를 로드한다. 2) Execution Engine 클래스 로더를 통해 JVM 내의 Runtime Data Area에 배치된 바이트 코드들을 명령어 단위로 읽어서 실행한다. 3) Garbage Collector 힙 메모리 영역에 생성된 객체들 중에서 참조되지 않은 객체를 탐색 후 제거하는 역할 GC가 역할을 하는..
[JAVA] Java Framework 종류
2022. 8. 2. 17:49
Back-End/Java & Spring
웹 프레임워크 Struts Framework 사용자가 요청하면 struts.xml 설정에 따라 액션으로 매핑시켜준다. 액션에서 로직 수행 후 결과를 request객체에 담고 리턴받은 포워드로 jsp를 연결시켜준다. Jsp페이지로 직접 url호출이 불가능하도록 설정 Grails Apache Groovy언어를 사용하며 JDK와 java언어를 기반으로 JVM에서 실행된다. Spring Boot, Hibernate, Quartz기반 JVM을 위한 웹 어플리케이션 프레임워크 Google Web Toolkit 자바스크립트 프론트엔드 애플리케이션을 자바로 만들고 관리할 수 있게 해주는 프레임워크 Java로 개발하면 GWT에서 제공하는 Java-to-Javascript로 컴파일하여 코드를 변환시켜준다. Va..
[JAVA] Collection Framework 정의/성능 비교
2022. 8. 2. 17:45
Back-End/Java & Spring
Java Collection Framework Collection 인터페이스 그룹 Collecton 인터페이스 직접적인 구현은 제공하지 않는다. 모든 컬렉션 클래스가 구현해야 하는 메서드들을 포함하고 있다. (add, remove, equals 등) Set 인터페이스 순서를 유지하지 않는다. 데이터의 중복을 허용하지 않는다. 종류 HashSet 가장 빠른 임의 접근 속도를 갖고 있다. 순서를 예측할 수 없다. TreeSet 정렬 방법을 지정할 수 있다 기본적으로 오름차순으로 데이터를 정렬한다. LinkedHashSet 예외적으로 입력된 순서대로 데이터를 저장한다. 출력 시 입력된 순서로 데이터를 가져온다. y축 : 시간/데이터 갯수 ( ns ) x축 : 데이터 삽입/조회 수 3) SortedSet..
[JAVA] 문자열 String
2022. 8. 2. 17:31
Back-End/Java & Spring
String literal = “”; / String object = new String ( “” ); String literal = “”; : Java Heap메모리의 String Pool 객체 안에 선언된다. String의 inern() 메서드가 호출되는 방식 String str = new String(“”); Java Heap메모리에 새로운 객체가 선언된다. 문자열 선언 성능 비교 String str = “hello”; 1회당 로직 수행 시간 : 0.849856ns String str = new String(“hello”); 1회당 로직 수행 시간 : 0.8495613ns *서로 성능은 동일하다. “Hello” 라는 문자열을 2개 선언했지만 JVM Heap 메모리의 String Pool 에는..
[JAVA] int / Integer 차이
2022. 8. 2. 17:28
Back-End/Java & Spring
Int ( 4 byte ) Primitive 자료형 산술연산 가능 Null로 초기화 불가능 Integer ( 16 byte ) 12(header) + 4(int) Wrapper 클래스 (객체) jdk 1.5 이전 버전은 Unboxing해야만 산술 연산 가능 클래스 -> 자료형 null선언이 가능해서 List선언, SQL과 연동할 경우 처리가 용이하다. DB에서 자료형이 정수형이지만 Null값이 필요할 경우 사용할 수 있다. 매개변수로 객체를 필요로 할 때 사용
[JAVA] DBMS Driver
2022. 8. 2. 17:10
Back-End/Java & Spring
Class.forName(“package.ClassName”); 문자열로 전달되는 클래스가 method영역에 저장되어 있는 클래스를 메모리에 로드시키는 역할 클래스가 처음 로드 되면 클래스 파일 내의 static 블록 안에 있는 로직이 실행되어 초기화한다. DBMS Driver DBMS Driver 클래스가 처음 로드 되면 클래스 파일 내의 static 블록 안에 있는 로직 (DriverManager.registerDriver(DBMS 드라이버))가 호출되면서 JDBC를 등록하고, 인스턴스를 생성한다. JVM에 등록된 JDBC Driver는 Connection conn = DriverManager.getConnection(url, DB이름, ID, PW); 에서 DB를 처음 Connection 하는 ..