![[JAVA] Java의 메모리 구조와 GC의 동작 방식](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtNtiS%2FbtsFscfSM4G%2FTWeIiN16vgtBv4gGgrhliK%2Fimg.png)
JVM의 동작 방식 자바 프로그램을 실행하면 OS로부터 JVM의 Runtime Data Area에 메모리가 할당된다. 이후 Class Loader에 의해 .class 파일이 동적으로 메모리에 올라가게 되고 Execution Engine에 의해 명령어 단위로 바이트 코드를 해석한다. Java의 메모리 구조 Java의 메모리 구조는 크게 메서드, 힙, 스택 세 가지 영역으로 나눌 수 있다. 이 중에서 메서드와 힙 영역은 프로세스 단위로 할당되어 스레드 간에 공유가 이루어지는 GC의 타겟 영역이다. 메서드 영역 클래스 정보, 메서드 정보, 정적 변수, 상수를 저장한다. 실행 시점에 모두 알고있는 정보이기 때문에 실행 시점에 메모리에 바로 로드된다. 힙 객체와 배열을 저장한다. 프로세스 실행 중에 동적으로 생성..
![[JAVA] 자바란 무엇이고, 어떤 특징이 있는가?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvQlPH%2FbtsFuHlUDfr%2FJMcy6oKOq3Vl4cVvIISrQk%2Fimg.png)
Java의 특징 WORA(Write Once, Run Anywhere), 플랫폼에 독립적이다. Java로 작성된 프로그램은 JVM (자바를 실행하기 위한 소프트웨어) 위에서 실행된다. OS에서 직접 실행하는 것이 아니기 때문에 자바 코드는 JVM만 있다면 어디서든 실행할 수 있다. 객체지향 언어이다. OOP의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향 언어이며, C++ 처럼 포인터를 사용하지도 않기 때문에 배우기 쉽다. 메모리를 자동으로 관리해준다. C언어에서는 malloc()으로 메모리를 할당하면 반드시 free()를 호출해서 개발자가 직접 메모리를 반환해주어야 했다. Java에서는 GC(Garbage Collection)가 new를 통해 생성되어 메모리를 할당받은 객체를 일정 주기로 ..
![Spring Security Authentication Architecture (feat. 6.2.2ver)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqXVKD%2FbtsE7ugmz08%2FVcEtuEUh9xxohFKKPjfJF1%2Fimg.png)
Authentication Archtecture SecurityContextHolder: 인증된 유저의 상세 정보가 저장된 스프링 시큐리티의 영역 ThreadLocal(스레드 단위로 할당 가능한 변수)을 사용하여 정보를 저장하여, SecurityContext가 요청을 처리하는 메서드의 파라미터로 들어가지 않더라도 항상 같은 스레드에서 사용할 수 있다. 현재 인증 요청을 처리한 뒤 스레드를 삭제하면 ThreadLocal은 안전한 방법이며, FilterChainProxy를 사용하면 SecurityContext가 항상 지워진다. SecurityContext: 현재 인증된 유저의 인증 정보(Authentication)를 포함하며, SecurityContextHolder로부터 가져올 수 있다. //Sample C..
![Spring Security Servlet Applications Architecture (feat. 6.2.2ver)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCOIzm%2FbtsFaNGfAA4%2F99shAkBa77clWV3qabT7gk%2Fimg.png)
Servlet Application Security Archtecture Servlet에서의 Spring Security은 Servlet Filter를 기반으로 한다. Filter Chain FilterChain: 필터 인스턴스와 서블릿의 집합 Spring MVC에서 Servlet은 DispatcherServlet 하나로 HttpServletRequest와 HttpServletResponse를 처리할 수 있지만, 필터 체인을 통해 다운스트림 필터 인스턴스 또는 서블릿의 호출을 막거나, HttpServletRequest 또는 HttpServletResponse를 수정할 수 있다. 필터는 다운스트림 필터 인스턴스와 서블릿에만 영향을 미치기 때문에 각 필터가 호출되는 순서는 매우 중요하다. public voi..