본문 바로가기

Programming/Languages (Java, etc)40

[JAVA] stack, heap (스택과 힙) 메모리 런타임 목차 자바의 메모리 영역 스택 (stack) 힙 (heap) 가비지 컬렉션 (Gabage Collection) 자바의 메모리 영역 자바의 메모리 구조는 크게 스택과 힙으로 나뉩니다. 스택 (stack) 기본 타입 (long, int, boolean,...)은 값을 실제로 저장 heap에 저장된 객체 (object 타입)의 주소값을 저장 scope 별 stack 영역 할당 스레드 별 독립적인 stack 할당 스택의 동작 과정은 간단히 다음과 같습니다. public class Test { public static void main(String[] args) { int arg = 2; /*1*/ arg = plusOne(argument); /*4, 5*/ } private static int plusOne(i.. 2022. 1. 26.
[javascript] event loop - 런타임의 이해 목차 자바스크립트 엔진 런타임 환경 정리 참조 링크 싱글 스레드 기반의 자바스크립트는 어떻게 비동기 처리가 가능할까요? 왜 setTimout 0을 넣어주면 해결이 될까요? 결론부터 얘기하면 web API, task que, eventLoop이 있기 때문에 가능합니다. 이제 자세히 설명해보겠습니다. 자바스크립트 엔진 싱글스레드 기반 자바스크립트는 싱글 스레드 기반의 언어입니다. 하나의 힙, 하나의 콜스택을 가지기 때문에 한 번에 한 가지 일밖에 할 수 없습니다. 만일 서버에 요청하는 함수가 실행되었다면 응답이 올 때까지 다음 동작은 불가능한 것이 원칙입니다. 힙 (memory heap) 동적으로 생성되는 객체들이 할당, 구조화되지 않은 넓은 메모리 공간 콜 스택 (call stack) 함수 실행시 push.. 2022. 1. 25.
System.out.println 보단 logger System.out.println API 패키지 : java.lang (Java 기본 API) System.out.println("Hello World!"); 추후 logger를 배우게 되면서 위 API를 호출하는 것이 아니라 여러 JAVA 로깅 라이브러리 (log4j2, logback) 중 하나를 선택하여 로깅을 하게 됩니다. Logger 라이브러리 : slf4j, log4j2, logback 등 import org.slf4j.Logger; import org.slf4j.LoggerFactory; ... private static final Logger logger = LoggerFactory.getLogger(HomeController.class); ... logger.debug("Hello Worl.. 2022. 1. 18.
JAVA logging framework (기본) - slf4j, log4j와 logback 목차 로깅이란? 로깅을하는 이유 log4j logback log4j2 slf4j (공통 추상체) log4j2 vs logback log4j2 보안 이슈 로깅이란? 시스템의 동작 시 상태 / 동작 정보 등을 시간의 경과에 따라 기록한 것을 로그, 이렇게 기록하는 행위를 로깅이라 함. 로깅을 하는 이유 로그는 프로그램 동작 과정, 기록 그 자체입니다. 로그를 통해 시스템의 동작 과정, 사용자의 이용 패턴 등을 분석할 수 있고 나아가 법적인 분쟁이슈, 증거자료 등에도 충분히 쓰일 수 있습니다. JAVA에서 많이들 사용하는 logging framework에는 크게 2가지(log4j, logback)가 있고 그 상위에 구현체 한가지 (slf4j)가 있습니다. 이 글에서는 이 것들을 명확히 구분하여 인식하고자 합니.. 2022. 1. 14.