반응형 분류 전체보기714 JVM의 구조 개요 자바는 JVM에서 작동하는 프로그램으로, JVM의 내부 구조를 알아보겠습니다. JVM 설계도 JVM은 크게 클래스 로더 시스템(Class Loader SubSystem), 런타임 데이터 공간(Runtime Data Areas), 실행 엔진(Execution Engines) 3가지로 분류 할 수 있습니다. 클래스 파일을 읽는 것부터, 분석과 실행의 과정을 확인해보겠습니다. 아래 사진은 JVM의 설계도입니다. 1. 클래스 로더 시스템(Class Loader SubSystem) 클래스 로더 시스템은 자바 클래스를 JVM의 Runtime Data Area에 동적으로 로드합니다. 컴파일 시점이 아닌 런타임 시점에 참조하고 있는 클래스를 로딩, 링킹, 초기화를 통해 로드합니다. 클래스 로더 덕분에 런타임에 파.. 2022. 10. 21. TIL_2022.10.19 1. Facts(사실, 객관) - 방화벽 정책 확인하기 - 모바일 사진 전송기능 폼 만들기 - PermGen vs Metaspace 정리 2. Feelings(느낌, 주관) 전 계열사 U2L 프로젝트로 신규 테스트 IP의 방화벽 정책을 새롭게 추가해야 합니다. 인프라팀에 현재 사용중인 방화벽 리스트를 요청했고, 전달받은 내용을 기준으로 신규 방화벽 정책을 추렸습니다. 기존에 부서에서 가지고 있던 엑셀 파일과 비교해서 정리하는데, INBOUND, OUTBOUND를 직접 볼 수 있어서 좋았고 덕분에 이해가 잘 됐습니다. 이런 정책들은 꼭 잘 업데이트 해야 유지보수가 쉽겠다고 생각이 들었습니다 모바일 사진 전송기능을 만들기 위한 폼을 만들었습니다. 4개의 탭을 생성하고 각각의 탭에 원하는 화면이 들어 올 수 .. 2022. 10. 20. Java 8에서 개선된 가비지 컬렉터는? 개요 Java 8은 2014년 3월에 출시되었으며, Java 7과 다른 가비지 컬렉터 구조를 가집니다. 대표적으로 Java 7의 PermGen이 Java 8에서 Metaspace로 대체되었습니다. 어떤 차이가 있는지 알아보겠습니다. PermGen PermGen(Permanent Generation)은 클래스와 메서드 메타 데이터, static 내용들이 저장되는 힙에서 분리된 별도의 힙 공간입니다. 또한 바이트코드, 이름, JIT 정보를 저장합니다. 기본 최대 메모리 크기는 32bit에서 64MB, 64bit에서 82MB입니다. JVM의 메모리 크기를 다음 명령어로 설정할 수 있습니다. -XX:PermSize=[size] is the initial or minimum size of the PermGen s.. 2022. 10. 19. TIL_2022.10.18 1. Facts(사실, 객관) - 새로운 도메인 주소 vhost 등록 - garbage collector 정리 - 액타소프트 e지로 테이블 설계 재정리 2. Feelings(느낌, 주관) 홈페이지에 새롭게 등록 될 도메인 주소 vhost 등록을 인프라와 완료했습니다. 추후, SSL 인증을 추가 할 예정입니다. garbage collector를 다시 정리했습니다. 이전에 공부했을 때는 잘 이해가 되지 않았는데, 최근에 다시 복습하고 있습니다. 이전에 정리한 글에서 매끄럽지 않은 문장과 문맥들을 다시 수정하고 보완했습니다. 단순히 글을 옮기거나 번역만 하지 않고 차근차근 쉽게 설명하기 위해 노력했습니다. 블로그 글은 한번 쓰고나서 다시 돌아보지 않는 경우들이 있습니다. 하지만, 다시 글을 본다면 이전에 잘못.. 2022. 10. 19. 가비지 컬렉터(Garbage Collector) - 2 개요 앞서 가비지 컬렉터의 과정 및 사용 방법을 알아보았습니다. 이번 시간에는 Old 영역에서 가비지 컬렉터 알고리즘을 알아보겠습니다. 버전은 Java 7 기준입니다. 목차 Serial Collector Parallel Collector Parallel Old Collector CMS Collector G1 Garbage Collector 1. Serial Collector(-XX:+UseSerialGC) Serial collector는 단 하나만의 쓰레드를 사용하며 다른 쓰레드들과 통신할 일이 없기 때문에 효율적인 방법입니다. 하나의 단일 프로세서에 사용하기에 적합하며 대신에 멀티 프로세서의 이점은 이용할 수 없습니다. (약 100MB의 작은 데이터 부분의 어플리케이션의 멀티 프로세서에서는 가능합니다... 2022. 10. 18. 가비지 컬렉터(Garbage Collector) - 1 개요 C, C++ 등의 언어는 메모리 관리를 위해 프로그래머가 객체의 생성뿐 아니라 삭제도 해야 합니다. 하지만, 가끔 삭제를 제대로 하지 않으면 새로운 객체가 생성될 메모리가 적어지고 OutOfMemoryErrors 오류가 납니다. 자바에서는 자동적으로 객체의 메모리 점유를 초기화(free)해주는 Garbage Collector가 존재합니다. 개발자가 직접 할당된 객체의 메모리를 제거하지 않기 때문에 좀 더 코드 구현에 집중할 수 있습니다. 삭제 알고리즘은 다양하며, 객체에 다양한 reference 수준을 설정하여 좀 더 최적화된 GC를 사용할 수 있습니다. 이번 글에서 GC가 어떻게 동작하여 객체를 삭제하는지 알아보겠습니다. 목차 가비지 컬렉터란? Reference Counting Algorithm .. 2022. 10. 18. TIL_2022.10.17 1. Facts(사실, 객관) - 모바일 전산 내 정보 업데이트 기능 개발 시작 - Array, ArrayList, Vector 차이 정리 2. Feelings(느낌, 주관) 모바일 전산 내 정보 업데이트 기능 개발을 시작했습니다. 가장 먼저 메뉴에서 하위 메뉴를 만들어 달라고 했는데, 구현이 안되어서 내부적으로 여러 탭을 활용하도록 제안하여 승인받았습니다. 또한 기존에는 메세지 문자만 전송이 가능했는데, 사진도 전송 기능도 요청해서 과거 개발 내용을 찾아보고 있습니다. 완전 새로운 신규 메뉴와 디자인이 필요한 경우도 있지만, 경우에 따라서 기존에 개발 내용들을 활용하면 효율성을 높일 수 있습니다. 최근에 자바 컬렉션 이해도를 높이고자 공부하던 중에 Array, ArrayList, Vector 차이점을 .. 2022. 10. 18. Array vs ArrayList 개요 Array와 ArrayList의 차이점을 알아보겠습니다. ArrayList는 내부적으로 Array로 구현합니다. 1. Array는 길이가 고정된 자료구조인 반면, ArrayList는 가변 컬렉션 클래스입니다. Array는 한번 만들어지면 길이를 변경할 수 없지만, ArrayList는 용량이 다 차면 스스로 사이즈를 늘립니다. (엄밀히 말해서 Array는 length이고, ArrayList는 size입니다.) ArrayList에서 사이즈를 늘리는 것은 성능이 다소 저하됩니다. ArrayList의 내부가 Array로 구현되어 있는데, 새로운 Array를 만들고 이전 값들을 모두 새로운 Array로 복사하기 때문입니다 2. Array에서 Generics를 사용 할 수 없습니다. 타입이 정해져 있으며, 변.. 2022. 10. 17. HashSet은 내부가 어떻게 구현이 되어 있는가? 개요 HashSet의 내부 구조를 알아보겠습니다. HashSet은 구현 시, HashMap을 이용합니다. HashSet 특징 HashSet 클래스는 Set 인터페이스를 구현하고, 내부적으로 hash table을 사용합니다(실제로는 HashMap입니다.) set의 저장 순서가 보장되지 않습니다. null 요소를 허용합니다 해쉬 함수가 버킷에 요소를 적절하게 분배한다면, add, remove, contains, size 등에 시간 성능이 좋습니다. HashSet 순회는 요소의 개수와 버킷의 용량을 합친 만큼 시간이 듭니다. 따라서, 순회 성능이 중요하다면, 초기에 너무 높은 용랑을 설정하지 않도록 합니다. HashSet은 동기화가 되지 않습니다. 멀티 쓰레드 환경에서 동시에 접근하고, 최소한 1개의 쓰레드가.. 2022. 10. 15. 이전 1 ··· 6 7 8 9 10 11 12 ··· 80 다음 반응형