일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Linux
- Lombok
- AWS
- NoSQL
- html
- Java
- javascript
- Static
- cache
- github
- reactive
- redis
- mybatis
- mongodb
- libuv
- nodejs
- 네트워크
- Heap
- git
- r
- 데이터통신
- VCS
- spring
- HTTP
- effective
- network
- ajax
- socket
- reactor
- Elk
- Today
- Total
목록Heap (4)
빨간색코딩
참조문서 : https://developers.google.com/web/tools/chrome-devtools/rendering-tools/js-execution웹어플리케이션 분석할 때 쓰지만, V8_inspector을 이용하여 노드에서도 쓸 수 있다.1. CPU ProfileCPU 사용량을 기록한다.Self Time : 함수의 현재 호출을 완료하는 데 얼마나 걸린 시간Total Time : 이 함수와 해당 함수가 호출한 모든 함수의 현재 호출을 완료하는 데 걸린 시간2. Heap Snapshot클릭시점에서 스냅샷 기록Shallow Size : array string과 같이 직접적으로 메모리를 점유하고 있는 js 객체들의 크기, 실제 데이터가 있는 영역Retained Size : GC 이후 남겨진 메모..
참조문서 : https://www.html5rocks.com/ko/tutorials/speed/static-mem-pools/1. 메모리 누수 원인nodejs는 v8엔진에서 GC를 주기적으로 수행한다. nodejs는 메모리관리가 불완전하고 어려운데, 그 이유는 GC역시 메인스레드(이벤트루프)에서 실행되기 때문이다. 따라서 메인스레드가 바쁜 작업(CPU인텐시브)을 돌릴 경우, 메모리는 급격히 증가하는데.. GC가 낄 틈새가 없는 것이다.2. 메모리 누수 해결방안이러한 메모리 누수를 피하려면 3가지 방법이 있다. 모두 다 이벤트루프를 고려한 프로그래밍이다.process.nextTick과 setTimeout을 활용하여 GC가 낄 틈새를 만들어주는 것이다.클로저와 스택의 빈번한 사용을 자제한다GC를 수동으로 이..
참조문서https://www.html5rocks.com/ko/tutorials/speed/v8/https://github.com/v8/v8/wiki 자바스크립트 엔진은 javascript로 작성된 코드를 해석하고 실행하는 인터프리터다. js엔진은 브라우저 벤더별로 다양하다. Mozilla의 Monkey시리즈, 자바의 바이트코드로 컴파일해주는 Rhino, 구글 크롬의 V8, Safari의 JavascriptCore, Explorer의 Chakra 등이 있다. 여기서 nodejs는 구글의 V8 JavaScript 엔진을 기반으로 동작한다. 우리가 자주쓰는 크롬브라우저도 V8엔진을 쓴다. 성능좋은 코드를 위해 V8을 알아보자 1. Hidden Class로 빠른 프로퍼티 접근과 정적 룩업 다른 JavaScrip..
1. JVM(Java Virtual Machine)이란?jvm은 java를 운영체제로부터 독립적으로 실행시켜주는 핵심이자 원리이다. 예를들어 C언어의 경우 소켓프로그램을 윈도우에서 짜면, 리눅스에서는 같은 코드로 돌아가지 않는다. 컴파일조차 실패할거다. 헤더파일도 다르고 함수명도 전부 다르니ㅋㅋ 그렇지만 java는 소켓프로그램짜두면 윈도우든 리눅스든 맥이던 플랫폼에 상관없이 돌아간다.2. JVM 구성요소JVM은 위 그림처럼 4가지 구성 요소를 가지고 있다.3. Class Loader.java 파일을 javac로 컴파일하면 바이트코드(.class)가 나온다. 이 파일을 컴파일 타임이 아닌 런타임에(동적으로) 메모리로 올려서 실행하는 부분이 Class Loader이다.※ Class Loader에 의해 바이트..