파마 공간이란?
자바 메모리 프로파일 링에 대해 배우는 동안 "힙"외에도 "펌 공간"이라는 용어를 계속 보게됩니다. 힙이 무엇인지 압니다. 파마 공간이 무엇인가요?
영구 생성을 의미합니다 .
영구 생성은 사용자 클래스 (Java 언어의 일부가 아닌 클래스)를 설명하는 메타 데이터를 보유하기 때문에 특별합니다. 이러한 메타 데이터의 예로는 클래스와 메서드를 설명하는 객체가 있으며 영구 세대에 저장됩니다. 코드 기반이 큰 응용 프로그램은 힙의이 세그먼트를 빠르게 채울 수 있으며, 이로 인해
java.lang.OutOfMemoryError
PermGen은 -Xmx가 얼마나 높고 컴퓨터에 얼마나 많은 메모리가 있는지에 관계없이 발생 합니다.
Perm space
로드 된 클래스 및 String Pool
일반적으로 String.intern()
메서드에 의해 생성되는 (고도로 최적화 된 문자열 동등성 테스트 용) 과 같은 몇 가지 고급 기능에 대한 정보를 유지하는 데 사용됩니다 . 응용 프로그램 (클래스 수)이 증가함에 따라이 공간에 대한 가비지 수집이 필요에 따라 정리하는 데 그다지 효과적이지 않기 때문에이 공간이 빠르게 채워집니다. 메모리 부족 : perm gen 공간 오류가 발생합니다. 그 후에는 큰 빈 JVM이 있더라도 해당 컴퓨터에서 응용 프로그램이 효과적으로 실행되지 않습니다.
응용 프로그램을 시작하기 전에이 java -XX:MaxPermSize
오류를 제거 해야 합니다.
간단하고 (과도하게 단순화 된) 대답 : jvm이 데이터가 아닌 자체 부기 데이터를 저장하는 곳입니다.
Perm Gen은 클래스에 대한 메타 데이터 정보를 보유하는 영구 생성을 의미합니다.
- 클래스 이름 A를 생성하면 인스턴스 변수가 힙 메모리에 저장되고 클래스 A는 정적 클래스 로더와 함께 영구 생성에 저장됩니다.
- 가비지 수집기는 영구 생성 메모리에 저장된 메모리 공간을 지우거나 해제하기가 어렵습니다. 따라서 항상 permgen 메모리 설정을 권장되는 한계로 유지하는 것이 좋습니다.
- JAVA8은 메타 공간 생성이라는 개념을 도입 했으므로 jdk 1.8 버전을 사용할 때 더 이상 permgen이 필요하지 않습니다.
permgen 공간은 클래스 및 메서드 개체와 같은 가상 머신 자체의 모든 반사 데이터를 보유하는 힙 영역입니다.
Permgen 공간은 항상 메소드 영역으로 알려져 있으며, 클래스 로더 서브 시스템이 클래스 파일 (바이트 코드)을 메소드 영역 (permGen)에로드 할 때. 여기에는 모든 클래스 메타 데이터가 포함됩니다. 예 : 클래스의 정규화 된 이름, 직계 상위 클래스의 정규화 된 이름, 변수 정보, 생성자 정보, 상수 풀 정보 등.
클래스 정의, 문자열 풀 등과 같은 것들을 보유하고 있습니다. 메타 데이터라고 부를 수있을 것 같습니다.
PremGen 아래 존재하는 것 : Class Area는 PremGen 영역 아래에 있습니다. 정적 필드는 클래스 로딩 시간에도 개발되므로 PremGen에도 존재합니다. 문자열처럼 풀링 된 모든 불변 필드가있는 상수 풀 영역이 여기에 유지됩니다. 또한 클래스 로더에 의해로드 된 클래스 데이터, 객체 배열, jvm에서 사용하는 내부 객체도 있습니다.
PermGen Space는 영구 생성을위한 메모리 할당을 의미합니다. 모든 Java 불변 객체는이 범주에 속합니다. 예 String
를 들어 리터럴 또는 String.intern()
메서드로 생성되고 클래스를 메모리에로드하기 위해 생성됩니다 . PermGen Space는 문자열 동등성 검색 속도를 높입니다.
참고 URL : https://stackoverflow.com/questions/1279449/what-is-perm-space
'Programing' 카테고리의 다른 글
es6 모듈 구현, json 파일로드 방법 (0) | 2020.09.18 |
---|---|
무한 재귀 오류없이 __getattribute__을 어떻게 구현합니까? (0) | 2020.09.18 |
(n & -n) == n이면 n이 2의 거듭 제곱 인 이유는 무엇입니까? (0) | 2020.09.18 |
bash에서 기능 키를 명령에 어떻게 바인딩합니까? (0) | 2020.09.18 |
Android Spanned, SpannedString, Spannable, SpannableString 및 CharSequence (0) | 2020.09.18 |