본문 바로가기

반응형

전체 글

(120)
GC 해당 포스트의 작성 목적 GarbageCollector GC의 전제조건 MinorGC MajorGC GC의 방법 5가지 해당 포스트의 작성 목적 GC포스팅을 한줄 알았는데, 공부만 하고 올리지 못했었다... 뭐지... JVM을 공부하면서 자연스럽게 GC에 대한 부분도 공부를 해야함을 느꼈다. GarbageCollector https://asfirstalways.tistory.com/159 프로그래머는 힙을 사용할 수 있는 만큼 자유롭게 사용하고, 더 이상 사용되지 않는 오브젝트들은 가비지 컬렉션이 자동으로 메모리에서 제거하도록 하는 것이 가비지 컬렉션의 기본 개념이다. GC는 기본적으로 Reachable한 객체와 UnReachable한 객체를 나누고, UnReachable한 객체를 소거한다. 해당 객체에..
JAVA의 역사와 JVM-1 해당 포스트를 작성하는 목적자바의 역사JDK와 JRE자바의 버전별 차이해당 포스트를 작성하며 알게된 점Reference해당 포스트를 작성하는 목적드디어 자바의신Vol2 에 진입했다. 자바의 역사와 JVM에 대해서 알아보는 단원인데, JVM에 관해서는 이미 앞서 진행했으므로, 크게 더 내용이 추가 될지는 모르겠다. 천천히 읽어보며, 미처 빠트린 내용이 있다면 이 포스트를 작성하며 다시 복습하고 가도록 하자.자바의 역사1991년 'Green'이라는 프로젝트가 생기면서 자바의 모태가 탄생했다. 초기엔 Oak라는 이름이었으나, 1995년 커피의 한종류인 자바커피에서 이름을 따 Java로 명명되며 본격적으로 시작되었다.JDK와 JREJDK : Java Development KitJRE : Java Runtime ..
Annotation 해당 포스트 작성의 목적 Annotation이란? Annotation의 종류 기본 어노테이션 -@Override,@Deprecated,@SupressWarnings @Override @Deprecated @SupressWarnings Java7,8에서 추가된 기본 어노테이션들 @SafeVarargs @FunctionalInterface 어노테이션을 개발자가 직접 선언하기 위한 메타어노테이션들 @Target @Retention @Documented @Inherited @interface Java8에서 추가된 메타어노테이션 @Repeatable 어노테이션을 직접 선언해보자! 선언된 어노테이션의 값들을 확인해 보자! 포스트를 작성하며 알게된 점 Reference 해당 포스트 작성의 목적 자바의신1 ch17 어..
Static 변수의 메모리 해제-Weak/Soft Reference 해당 포스트의 작성목적 앞서 배운 GC, JVM포스팅으로 Static변수에 참조자료형의 객체가 할당되면 자바프로그램이 종료될때까지 살아있기 때문에, GC가 메모리 회수를 할 수가 없으므로, 메모리릭이 발생할 수있음을 알게되었다. 그렇다면 이렇게 Static변수에 할당된 메모리들을 다시 해제하려면 어떻게 해야할까?? 그 방법을 알아보자 NULL 로 해제하자 해당 객체의 참조를 받고 있는 변수에 null을 할당한다. 객체의 참조가 사라지면서, 힙메모리에 언리쳐블 상태가 된 객체를 GC가 메모리를 수거 할 것이다. 하지만 좋은 방법이 아니다. 소스코드 또한 더러워지며.. 반드시 필요할때만 사용하도록 하자. 라고한다... 뭔가 정확히 왜 안좋은지는 모르겠다. 그냥 안좋을것 같은느낌.. NullException이..
클래스안의 클래스-2 해당 포스트의 작성 목적 앞서 내부 클래스를 공부했을때는 명확한 개념이나 쓰임새 등에 대해서 알지 못했다. 내부 클래스란 무엇이고, 이런 종류가 있다 정도만 훑고 이해했다. 이번 포스팅에서는 '그냥 내부클래스라는 개념이 있다' 정도의 지식에서 좀더 깊게 파고들어가, 내부클래스가 왜 사용되는지 실제로 코드로 작성,직접 체감하며 이해하고자 한다. 내부 클래스는 왜 사용하는가? 앞서 포스팅한 내용을 그대로 가져왔다. 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있을때 캡슐화가 필요할 때 (A클래스에 private변수를 선언, 이 변수에 접근하고 싶은 B클래스를 만들고 이 B클래스를 외부로 노출시키고 싶지 않을때) 즉, 내부구현을 감추고 싶을때 사용한다. 소스의 가독성과 유지보수성을 높이고 싶..
GC Log보는 방법 해당 포스트 작성의 목적 GC로그를 보는 방법을 알아보자. GC로그를 보고 트러블 슈팅을 해결하는데 큰 도움이 된다. GC 로그는 어떻게 출력할까? GC로그를 출력하는 방법은 간단하다. IDE를 사용한다면 각 IDE설정에 맞게 실행옵션에서 gc로그를 출력하는 옵션을 주면 된다. 터미널에서 java실행한다면,- verbose:gc 명령어를 통해서 GC로그를 출력할 수 있다. (무한루프를 돌리거나, System.gc()메소드로 gc를 강제로 실행시켜서 확인해볼수있다.) java -verbose:gc .\NestedSample.java PS E:\gitPrjxt\goj> java -verbose:gc .\NestedSample.java [0.013s][info][gc] Using G1 [0.033s][info..
클래스 안의 클래스-1 해당 포스트 작성의 목적 자바의신1 16장 클래스 안의 클래스 단원을 복습 및, 오류로 인해 공부하지 않았던 점을 정리하며 공부한다. 클래스안의 클래스는 무엇이있고, 왜 사용하는지 등을 알아보자 Nested클래스 자바에서는 클래스 안에 클래스가 들어갈 수있다. 이런 클래스를 Nested클래스 라고 부른다. Nested클래스의 존재이유중 가장 큰 이유는 코드의 간결성 때문이다. 이런 Nested클래스에는 여러 종류가 있는데, static 키워드 유무와, 이름의 유무에 따라 아래 그림과 같이 나눠진다. 앞서 말했지만 Nested 클래스를 사용하는 이유에 대해서 좀더 알아보자 한 곳에서만 사용되는 클래스를 논리적으로 묶어서 처리할 필요가 있을때 캡슐화가 필요할 때 (A클래스에 private변수를 선언, 이 변..
JVM이란 무엇인가 해당 포스트의 작성 목적 기본자료형과 참조자료형의 차이점에 대해서, 메모리에 어떻게 저장되는지에 대한 차이를 공부하다가, JVM에 대한 전반적인 이해가 필요하다는 결론에 이르렀다. 단순히 스택메모리, 힙메모리에 저장된다. 라는 단편적인 지식말고, 해당 메모리들이 JVM에서 어떻게 사용되고, 위치하는지에 대해서 알아보자. JVM JVM이란 Java Virtual Machine, 자바 가상 머신의 약자를 따서 줄여부르는 용어이다. 가상머신 이란 : 프로그램을 실행하기 위해 물리적 머신과 유산 머신을 소프트웨어로 구현한 것이다. JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바API와 함께 실행하는 것이다. JVM은 Java와 OS사이에서 중개자 역할을 수행하여 Java가 OS에 구애 받..

반응형