분류 전체보기
-
jvm 가비지 컬렉션카테고리 없음 2023. 4. 18. 12:31
가비지 컬렉션(이하 GC) GC 의 과정 GC에 대해서 알아보기전 알아야 용어가 있다. 바로 stop-the-world이다. stop-the-world란 GC를 실행하기 위해 JVM이 어플리케이션 실행을 멈추는 것이다. stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. 대게의 경우 GC 튜닝이란 이 stop-the-world 시간을 줄이는 것이다. 자바는 프로그램 코드에서 메모리를 명시적으로 해제하지 않는다. 가끔 명시적으로 해제하려고 해당 객체를 null로 지정하거나 System.gc() 메서드를 호출하는 개발자가 있다. null로 지정하는 것은 큰 문제가 안되지만 System.gc() 메서드를 호출하는 것은 시스템의 성능에 큰 영향을 끼치므로 ..
-
jvm 메모리카테고리 없음 2023. 4. 18. 12:31
jvm 메모리 jvm에서 메모리 영역인 런타임 데이터 영역의 구조를 그림으로 그리면 다음과 같다. 크게 3부분으로 나눠진다. 1. 메소드 영역(클래스 영역) 필드나 메서드의 메타데이터 저장 static 변수, 메소드 저장 바이트 코드 저장 상수 풀(Constant Pool) 2. 스택 영역 Last In First Out(LIFO) 메서드 호출 시마다 각각의 프레임 생성 메서드 안에서 사용되어지는 값들을 저장 호출된 메서드의 매개변수, 지역변수, 리턴 값 및 연산 시 일어나는 값들을 임시로 저장 메서드 수행이 끝나면 프레임별로 삭제 3. 힙 영역 new 연산자로 생성된 객체와 배열을 저장하는 공간 클래스 영역에 로드된 클래스만 생성가능 GC를 통해 메모리 반환
-
jvm 이란카테고리 없음 2023. 4. 18. 12:31
jvm 이란 jvm 자바 가상 머신은 자바 바이트코드를 실행할 수 있는 주체이다. 일반적으로 인터프리터나 JIT 컴파일 방식으로 다른 컴퓨터 위에서 바이트코드를 실행 할수 있도록 구현되나 자바 프로세서처럼 하드웨어와 소프트웨어를 혼합해 구현하는 경우도 있다.(이론적으로는 100% 하드웨어 구현도 가능하다. 하지만 비효율적이다) 종류 오라클이 소유한 두 종류의 JVM으로 썬마이크로시스템즈에서 개발된 HotSpot 또 다른 하나는 BAE 시스템에서 개발된 JRockit가 있다. 클린 룸 구현 에는 Kaffe IBM사의 IBM_J9가 있다. 대부분의 경우는 HotSpot을 사용한다.
-
mac maven install카테고리 없음 2023. 4. 18. 12:30
mac maven 설치 http://maven.apache.org/download.cgi 에서 다운로드 받는다. 압축을 적당한 곳에 풀다 lee-ui-MacBook-Air:bin wonwoo$ ./mvn -version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00) Maven home: /Users/wonwoo/apache-maven-3.3.9 Java version: 1.8.0_60, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre Default loc..
-
mac gradle install카테고리 없음 2023. 4. 18. 12:30
mac에서 gradle 설치 gradle 홈페이지에서 다운로드 받는다. http://gradle.org/gradle-download/ 다운받고 압축을 푼후 자신에 맞는 경로에 gradle을 이동한뒤에 cd {gradle_home}/bin ./gradle -version ------------------------------------------------------------ Gradle 2.11 ------------------------------------------------------------ Build time: 2016-02-08 07:59:16 UTC Build number: none Revision: 584db1c7c90bdd1de1d1c4c51271c665bfcba978 Groovy:..
-
AspectJ카테고리 없음 2023. 4. 18. 12:30
AspectJ 포인트컷(@Pointcut) 포인트컷은 @Pointcut 어노테이션이 달린 메소드를 이용해 선언. 선택 로직은 @Pointcut 안에 포인터컷 표현식을 넣어서 정의한다. 메소드의 내부는 코드를 작성할 필요는 없다. @Pointcut("execution(* hello(..))") private void all() { } 어드바이스(@Before, @AfterRetuning, @AfterThrowing, @After, @Around) 어드바이스도 포인터컷과 마찬가지로 어노테이션이 붙은 메소드를 이용해 정의한다. AspectJ에서는 다섯가지 종류의 어드바이스를 사용할 수 있다. @Around : Methodlnterceptor 인터페이스 메소드와 비슷하다. 실제로 @Around 와 Methodl..
-
BeanDefinition카테고리 없음 2023. 4. 18. 12:30
BeanDefinition 스프링의 설정 메타 정보는 XML 파일이 아니다. 스프링에 대한 대표적인 오해 중의 하나는 스프링의 설정정보는 XML로 되어있다. 스프링이 XML에 담긴 내용을 읽어서 설정 메타정보를 활용하는 것은 사실이지만 그렇다고 해서 스프링이 XML로 된 설정 메타정보를 가졌다는 말은 틀렸다. 스프링의 설정 메타정보는 BeanDefinition 인터페이스로 표현되는 순수한 추상 정보다. 스프링 IoC 컴테이너, 즉 애플리케이션 컨텍스트는 바로 BeanDefinition 으로 만들어진 메타정보를 담은 오브젝트를 사용해 IoC와 DI 작업을 수행한다. BeanDefinition helloDef =new RootBeanDefinition(Hello.class); helloDef.getPrope..
-
spring-boot-autoconfiguration카테고리 없음 2023. 4. 18. 12:30
spring boot autoconfiguration 정리 ConditionalOnMissingBean @ConditionalOnMissingBean Bean 이 존재 하지 않을때 실행되는 어노테이션이다. bean name(String)으로 설정 할 수 도 있고 class(해보지 않음) 혹은 annotation(이것도 안해봄)등 설정 할 수 있는 모양이다. 예) @ConditionalOnMissingBean(name = "helloConfigSample") helloConfigSample 존재 하지 않을때 실행하라. ConditionalOnBean @ConditionalOnBean 이 전과 반대로 Bean이 존재 할때 실행 되는 어노테이션이다. 예) @ConditionalOnBean(name = "hel..