본문 바로가기
728x90

👨‍🏫Study/JAVA59

[JAVA] GC(Garbage Collection)2 Garbage Collection? .NET의 GC(Garbage Collection)는 애플리케이션의 메모리 할당 및 해제를 관리한다. 새 개체를 만들 때마 공용 언어 런타임이 관리되는 힙에서 개체에 대해 메모리를 할당한다. 관리되는 힙에서 주소 공간을 사용할 수 있다면 런타임은 계속해서 새 개체에 공간을 할당한다. 그러나 메모리는 무한하지 않다. 결국 GC는 메모리를 확보하기 위해 수집을 수행해야 한다. GC의 최적화 엔진은 수행 중인 할당에 따라 수집을 수행하기에 가장 적합한 시간을 결정한다. GC는 수집을 수행할 때 애플리케이션에서 관리되는 힙에 있는 더 이상 사용하고 있지 않은 개체를 확인하고 해당 메모리를 회수하는데 필요한 작업을 수행한다. CLR(공용 언어 런타임)에서 GC는 자동 메모리 관.. 2022. 5. 2.
[JAVA] JNDI(Java Naming and Directory Interface) Naming and Directory Concepts Naming Service 시스템 자원이나 객체, 서비스 등에 이름을 부여하고 그 이름을 통해 대상을 찾게 해주는 서비스 Directory Service 자원이나 객체 등의 이름뿐 아니라 이들의 속성을 통해서도 대상을 찾게 해주는 서비스 DNS(Domain Name System), File System, LDAP, ... Naming service names are associates with objects To map user friendly names to objects For examples, DNS : www.examples.com > 192.0.2.5 File system : C:\bin\autoexe.bat > File Reference N.. 2022. 4. 27.
[JAVA] Effective Java 1 1. 객체의 생성과 파괴 생성자 대신 정적 팩토리 메서드를 고려하라. 클래스는 클라이언트에 public 생성자 대신 정적 팩토리 메서드를 제공할 수 있다. 정적 팩토리 메소드가 생성자보다 좋은 장점 이름을 가질 수 있다. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. 반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다. 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 정적 팩토리 메서드를 작성하는 시점에는 반환할 객체의 클래스가 존재하지 않아도 된다. 단점 상속을 하려면 public이나 protected 생성자가 필요하니 정적 팩토리 메서드만 제공하면 하위 클래스를 만들 수 없다. 정적 팩토리 메서드는 프로그래머가 찾기 어렵다. 정적 팩토리 메서드의 명명 방식 from:.. 2022. 4. 25.
[JAVA] EJB 추가 정리 Java Beans - 대규모 프로젝트에서 쓰임 - 용도 : 업무를 분할해서 전체를 잘만들어보자. JSP : web page 디자인 JavaBean : 내부 logic 구현 예제 public class MyBean { Private String name = "Heo"; public String getName() { return name; } public void setName(String name) { this.name = name; } } 1. Getter, Setter 2. Empty constructor *업무를 분담하기 위해서 컴포넌트 별로 나누어놓음. Enterprise Java Beans Transaction, Security 처리 Security 처리 예제(무식한 코드 삽입, 예전 방법, 디.. 2022. 4. 22.
[JAVA] GC(Garbage Collection) 영역별 데이터 흐름 정리 위 그림의 Permanent Generation 영역(이하 Perm 영역)은 Method Area라고도 한다. 객체나 억류(intern)된 문자열 정보를 저장하는 곳이며, Old 영역에서 살아남은 객체가 영원히 남아 있는 곳은 절대 아니다. 이 영역에서 GC가 발생할 수도 있는데, 여기서 GC가 발생해도 Major GC의 횟수에 포함된다. 그렇다면 "Old 영역에 있는 객체가 Young 영역의 객체를 참조하는 경우가 있을 때에는 어떻게 처리될까?" 라고 궁금해 할 수도 있다. 이러한 경우를 처리하기 위해서 Old 영역에는 512바이트의 덩어리(chunk)로 되어 있는 카드 테이블(cardf table)이 존재한다. 카드 테이블에는 Old 영역에 있는 객체가 Young 영역의 객체를 참할 때마다 정보가 표.. 2022. 4. 21.
[JAVA] G1GC G1GC G1GC는 JDK 11 부터 공식적인 GC 알고리즘으로 적용되었고, 하드웨어가 점점 발전하면서 대용량 메모리에 적합한 솔루션을 제공하기 위해 나타났다. G1GC는 Eden, Survivor, Old 영역이 존재하지만, 해당 영역은 고정된 크기가 아니며 전체 Heap 메모리 영역을 Region 이라는 특정한 크기로 나눈 것이고 Region의 상태에 따라 그 Region의 역할(Eden, Survivor, Old)가 동적으로 변동한다. Region은 기본적으로 (전체 Heap 메모리) / 2048 로 default 값이 지정되어있다. Humonogous: Region 크기의 50%를 초과하는 큰 객체를 저장하기 위한 공간 Available/Unused: 아직 사용되지 않은 Region G1GC에서도.. 2022. 4. 20.
[JAVA] Garbage Collector Java는 프로그램에서 메모리를 명시적으로 지정하여 해제하지 않는다. 가끔 명시적으로 해제하려고 해당 객체를 null로 지정하거나 System.gc() 메서드를 호출하는 개발자가 있다. null로 지정하는 것은 큰 문제가 안 되자만, System.gc() 메서드를 호출하는 것은 시스템의 성능에 매우 큰 영향을 끼치므로 System.gc() 메서드는 절대로 사용하면 안된다. Java에서는 개발자가 프로그램 코드로 메모리를 명시적으로 해제하지 않기 때문에 가비지 컬렉터(Garbage Collector)가 더 이상 필요 없는(쓰레기) 객체를 찾아 지우는 작업을 한다. Garbage Collection Garbage Collection이란? - 객체가 접근 불가능한 상태(Unreachable)가 되었을 때, 메.. 2022. 4. 19.
[JAVA] EJB(Enterprise JavaBeans) EJB란? EJB는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다. 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션이다. EJB 사양은 Java EE의 자바 API 중 하나로, 주로 웹 시스템에서 JSP는 화면 로직을 처리하고, EJB는 업무 로직을 처리하는 역할을 한다. EJB 개발의 특징과 필요성 동시접속자수가 10,000명이상인 사이트 구축시 사용하는 컴포넌트 기술 동시접속자수가 많은 가운데 안정적인 트랜잭션이 필요한 사이트 구축시 사용 접속자수가 많은 공공기관, 기상청, 병무청, 금융, 보험, 포털사이트, 게임사이트, 기업등에서 집중적으로 사용 EJB 시스템은 속도는 느리지만 개발시에 개발자에게 많은 자동화된 기능을 제공해 분산 시스템 구축을 쉽게 해준다. EJ.. 2022. 4. 15.
[Database] JDBC JDBC란? 자바에서 DB 프로그래밍을 하기 위해 사용되는 API *데이터베이스 종류에 상관없다. *JDBC 드라이버 : 각 DBMS에 알맞는 클라이언트 JDBC(Java Database Connectivity) 자바 프로그램 내에서 DB와 관련된 작업을 처리할 수 있도록 도와주는 일을 한다. java에서 DB를 사용할 때에는 JDBC API를 이용하여 프로그래밍한다. 자바는 DBMS종류에 상관없이 하나의 JDBC를 사용하여 DB작업을 처리할 수 있기 때문에 알아두면 어떤 DBMS든 작업을 처리 할 수 있게 된다. JDBC API가 생긴 이유 JDBC API가 없었던 옛날에는 각각의 데이터베이스마다(ms-sql, my-sql, oracle..) 각각의 SQL문을 사용한다. 그래서 DB의 종류에 따라 SQ.. 2022. 4. 14.
728x90