JVM 기본 소개: 런타임 데이터 영역
이 그림은 JVM을 접한 모든 사람에게 친숙할 것입니다. 이것이 JVM을 시작하기 위한 첫 번째 교훈이라고 할 수 있습니다. 그중에서도 "heap" 및 "가상 머신 스택(stack)"이 더욱 친숙합니다. 다음은 이 사진을 바탕으로 JVM의 런타임 데이터 영역에 대해 간략하게 소개하겠습니다.
프로그램 카운터(Program Counter Register)
컴퓨터 운영체제에서 프로그램 카운터는 다음 명령의 주소를 나타냅니다. JVM의 프로그램 카운터의 경우 이는 현재 스레드에서 실행되는 바이트코드의 줄 번호 표시로 볼 수 있습니다. 각 스레드에는 프로그램 카운터가 있습니다. 작업 실행, 스레드 전환 후 올바른 위치로 복원될 수 있는지 확인하려는 경우) 중요한 점——프로그램 카운터는 JVM 사양에서 유일하게 지정하지 않은 것입니다. OutOfMemory(메모리 누수, 이하 OOM의 영역이라고 함)이 발생할 수 있습니다. 즉, 위 사진의 나머지 4 영역은 OOM을 유발할 수 있습니다.
☆가상 머신 스택(Java Virtual Machine Stacks)
이 메모리 영역은 우리가 흔히 "stack"이라고 부르는 영역입니다. 변수를 저장하는 데 사용됩니다. 즉, 예를 들면 다음과 같습니다.
int i = 0;
가상 머신 스택 메모리는 4바이트를 사용하여 i 변수를 저장합니다. 변수의 메모리 공간은 처음부터 결정될 수 있으므로(참조 변수의 경우 물론 주소 참조가 저장되며 크기도 고정되어 있음) 이 메모리 영역은 컴파일러에 의해 결정될 수 있습니다. StackOverflowError 또는 OOM 오류. JVMparameters"-Xss228k"(스택 크기는 228k)을 설정합니다. rreee
실행 결과는 아래 그림과 같습니다. JVM이 StackOverflowError를 발생시킵니다. 이는 스레드가 요청한 스택 깊이가 에서 허용하는 깊이보다 크다는 의미입니다. JVM.
단일 스레드 상황에서는 어쨌든 StackOverflowError이 발생합니다. OOM 예외가 발생하는 경우 메모리가 소진될 때까지 스레드가 계속 생성되기 때문입니다.
JVM의 메모리는 힙 메모리 + 메소드 영역 메모리 + 남은 메모리, 즉 남은 메모리 =메모리 JVM에 할당된 메모리로 구성됩니다. 운영 체제별 - 힙 메모리 - 메서드 영역 메모리. -Xss는 각 스레드의 스택 용량을 설정합니다. 이는 생성할 수 있는 스레드 수를 의미합니다. = 남은 메모리 / 스택 메모리. 이때, 스택 메모리가 크면 생성 가능한 스레드 수가 적어지고, 스택 메모리가 작으면 생성 가능한 스레드 수가 OOM 발생하기 쉽습니다. 더 커지고 OOM이 쉽게 발생하지 않습니다.
이 상황을 피하는 가장 좋은 방법은 힙 메모리 +메서드 영역 메모리를 줄이거나 스택 메모리를 적절하게 줄이는 것입니다. 스택 메모리 구성은 일반적으로 기본값인 1M을 사용하거나, 64비트 운영체제와 64비트 JVM을 사용합니다.
네이티브 메소드 스택(Native Method Stack)
로컬 메소드 스택은 가상 머신 스택과 유사하지만, 가상 머신 스택은 Java 메소드를 제공한다는 점이 다릅니다. 로컬 메소드 스택이 제공하는 것은 Native 메소드입니다. HotSpot 가상 머신 구현에서는 로컬 메서드 스택과 가상 머신 스택이 하나로 결합됩니다. 마찬가지로 StackOverflowError 및 OOM 예외도 발생합니다.
☆Java 힙
对于堆,Java程序员都知道对象实例以及数组内存都要在堆上分配。堆不再被线程所独有而是共享的一块区域,它的确是用来存放对象实例,也是垃圾回收GC的主要区域。实际上它还能细分为:新生代(Young Generation)、老年代(Old Generation)。对于新生代又分为Eden空间、From Survivor空间、To Survivor空间。至于为什么这么分,这涉及JVM的垃圾回收机制,在这里不做叙述。堆同样会抛出OOM异常,下面例子设置JVM参数” -Xms20M -Xmx20M“(前者表示初始堆大小20M,后者表示最大堆大小20M)。
1 package com.jvm; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 /** 7 * -Xms20M -Xmx20M 堆初始大小20M 堆最大大小20M 8 * Created by yulinfeng on 7/11/17. 9 */10 public class Test {11 12 public static void main(String[] args) {13 List<Test> list = new ArrayList<Test>();14 int count = 0;15 try {16 while (true) {17 count++;18 list.add(new Test()); //不断创建线程19 }20 } catch (Throwable e) {21 System.out.println("创建实例个数:" + count);22 e.printStackTrace();23 }24 25 }26 }
执行的结果可以清楚地看到堆上的内存空间溢出了。
☆方法区(Method Area)
对于JVM的方法区,可能听得最多的是另外一个说法——永久代(Permanent Generation),呼应堆的新生代和老年代。方法区和堆的划分是JVM规范的定义,而不同虚拟机有不同实现,对于Hotspot虚拟机来说,将方法区纳入GC管理范围,这样就不必单独管理方法区的内存,所以就有了”永久代“这么一说。方法区和操作系统进程的正文段(Text Segment)的作用非常类似,它存储的是已被虚拟机加载的类信息、常量(从JDK7开始已经移至堆内存中)、静态变量等数据。现设置JVM参数为”-XX:MaxPermSize=20M”(方法区最大内存为20M)。
1 package com.jvm; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 /** 7 * -XX:MaxPermSize=20M 方法区最大大小20M 8 * Created by yulinfeng on 7/11/17. 9 */10 public class Test {11 12 public static void main(String[] args) {13 List<String> list = new ArrayList<String>();14 int i = 0;15 while (true) {16 list.add(String.valueOf(i++).intern()); //不断创建线程17 }18 }19 }
실제로 위 코드의 경우 JDK6, JDK7, JDK8에서 실행 결과가 다릅니다. 그 이유는 문자열 상수 풀이 여전히 JDK6의 메서드 영역(영구 생성)에 저장되어 있기 때문에 OutOfMemoryError:Permanent Space이 발생하고 JDK7 뒤에 문자열 상수가 발생하기 때문입니다. will throw됩니다. 풀이 Java 힙으로 이동되었습니다. 위 코드는 OOM을 발생시키지 않습니다. 힙 메모리가 20M로 변경되면 OutOfMemoryError:Java가 발생합니다. heap space; JDK8에서는 단순히 메소드 영역의 개념을 취소하고 "metaspace(Metaspace)"로 대체했습니다. 가상 머신 매개변수 "-XX:MaxPermSize"는 의미가 없으며 대체 매개변수는 "-XX:MetaspaceSize" 및 "-XX:MaxMetaspaceSize"etc입니다.
위 내용은 JVM 기본 소개: 런타임 데이터 영역의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











확산은 더 잘 모방할 수 있을 뿐만 아니라 "창조"할 수도 있습니다. 확산 모델(DiffusionModel)은 이미지 생성 모델입니다. AI 분야에서 잘 알려진 GAN, VAE 알고리즘과 비교할 때 확산 모델은 먼저 이미지에 노이즈를 추가한 다음 점차적으로 노이즈를 제거하는 프로세스를 취합니다. 원본 이미지의 노이즈를 제거하고 복원하는 방법이 알고리즘의 핵심 부분입니다. 최종 알고리즘은 임의의 잡음이 있는 이미지에서 이미지를 생성할 수 있습니다. 최근 몇 년 동안 생성 AI의 경이적인 성장으로 인해 텍스트-이미지 생성, 비디오 생성 등에서 많은 흥미로운 애플리케이션이 가능해졌습니다. 이러한 생성 도구의 기본 원리는 이전 방법의 한계를 극복하는 특수 샘플링 메커니즘인 확산의 개념입니다.

키미: 단 한 문장이면 단 10초만에 PPT가 완성됩니다. PPT가 너무 짜증나네요! 회의를 하려면 PPT가 있어야 하고, 주간 보고서를 작성하려면 PPT가 있어야 하며, 누군가를 부정행위를 했다고 비난하려면 PPT를 보내야 합니다. 대학은 PPT 전공을 공부하는 것과 비슷합니다. 수업 시간에 PPT를 보고 수업 후에 PPT를 하는 거죠. 아마도 데니스 오스틴이 37년 전 PPT를 발명했을 때, 언젠가 PPT가 이렇게 널리 보급될 것이라고는 예상하지 못했을 것입니다. 우리가 PPT를 만들면서 힘들었던 경험을 이야기하면 눈물이 납니다. "20페이지가 넘는 PPT를 만드는 데 3개월이 걸렸고, 수십 번 수정했어요. PPT를 보면 토할 것 같았어요. 한창 때는 하루에 다섯 장씩 했는데, 숨소리까지 냈어요." PPT였어요." 즉석 회의가 있으면 해야죠.

베이징 시간으로 6월 20일 이른 아침, 시애틀에서 열린 최고의 국제 컴퓨터 비전 컨퍼런스인 CVPR2024가 최우수 논문 및 기타 수상작을 공식 발표했습니다. 올해는 우수논문 2편, 최우수 학생논문 2편 등 총 10편의 논문이 수상하였습니다. 컴퓨터 비전(CV) 분야 최고 학회는 매년 수많은 연구기관과 대학이 모여드는 CVPR이다. 통계에 따르면 올해 총 1만1532편의 논문이 제출돼 2719편이 채택돼 합격률 23.6%를 기록했다. Georgia Institute of Technology의 CVPR2024 데이터 통계 분석에 따르면 연구 주제 관점에서 가장 많은 논문이 이미지 및 비디오 합성 및 생성입니다(Imageandvideosyn

우리는 LLM이 대규모 데이터를 사용하여 대규모 컴퓨터 클러스터에서 훈련된다는 것을 알고 있습니다. 이 사이트는 LLM 훈련 프로세스를 지원하고 개선하는 데 사용되는 다양한 방법과 기술을 소개합니다. 오늘 우리가 공유하고 싶은 것은 기본 기술에 대해 심층적으로 살펴보고 운영 체제 없이도 수많은 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 방법을 소개하는 기사입니다. 이 기사는 기계가 생각하는 방식을 이해하여 일반 지능을 달성하기 위해 노력하는 AI 스타트업 Imbue에서 가져온 것입니다. 물론 운영 체제가 없는 "베어 메탈"을 LLM 교육을 위한 컴퓨터 클러스터로 전환하는 것은 탐색과 시행착오로 가득 찬 쉬운 과정이 아니지만 Imbue는 마침내 700억 개의 매개변수를 사용하여 LLM을 성공적으로 교육했습니다. 과정이 쌓이다

PyCharm Community Edition 빠른 시작: 자세한 설치 튜토리얼 전체 분석 소개: PyCharm은 개발자가 Python 코드를 보다 효율적으로 작성하는 데 도움이 되는 포괄적인 도구 세트를 제공하는 강력한 Python 통합 개발 환경(IDE)입니다. 이 문서에서는 PyCharm Community Edition을 설치하는 방법을 자세히 소개하고 초보자가 빠르게 시작할 수 있도록 구체적인 코드 예제를 제공합니다. 1단계: PyCharm Community Edition 다운로드 및 설치 PyCharm을 사용하려면 먼저 공식 웹사이트에서 다운로드해야 합니다.

널리 사용되는 프로그래밍 언어인 C언어는 컴퓨터 프로그래밍에 종사하려는 사람들이 꼭 배워야 할 기본 언어 중 하나이다. 그러나 초보자의 경우 새로운 프로그래밍 언어를 배우는 것이 다소 어려울 수 있습니다. 특히 관련 학습 도구와 교육 자료가 부족하기 때문입니다. 이번 글에서는 초보자가 C 언어를 시작하고 빠르게 시작할 수 있도록 도와주는 프로그래밍 소프트웨어 5가지를 소개하겠습니다. 최초의 프로그래밍 소프트웨어는 Code::Blocks였습니다. Code::Blocks는 무료 오픈 소스 통합 개발 환경(IDE)입니다.

제목: 기술 초보자가 꼭 읽어야 할 책: C언어와 Python의 난이도 분석, 구체적인 코드 예제가 필요한 오늘날의 디지털 시대에 프로그래밍 기술은 점점 더 중요한 능력이 되었습니다. 소프트웨어 개발, 데이터 분석, 인공 지능과 같은 분야에서 일하고 싶거나 관심 있는 프로그래밍을 배우고 싶다면 적합한 프로그래밍 언어를 선택하는 것이 첫 번째 단계입니다. 많은 프로그래밍 언어 중에서 C 언어와 Python은 널리 사용되는 두 가지 프로그래밍 언어이며 각각 고유한 특성을 가지고 있습니다. 이번 글에서는 C언어와 Python의 난이도를 분석해보겠습니다.

Machine Power Report 편집자: Yang Wen 대형 모델과 AIGC로 대표되는 인공지능의 물결은 우리가 살고 일하는 방식을 조용히 변화시키고 있지만 대부분의 사람들은 여전히 그것을 어떻게 사용하는지 모릅니다. 이에 직관적이고 흥미롭고 간결한 인공지능 활용 사례를 통해 AI 활용 방법을 자세히 소개하고 모두의 사고를 자극하고자 'AI in Use' 칼럼을 론칭하게 됐다. 또한 독자들이 혁신적인 실제 사용 사례를 제출하는 것을 환영합니다. 영상 링크 : https://mp.weixin.qq.com/s/2hX_i7li3RqdE4u016yGhQ 최근 샤오홍슈에서는 혼자 사는 소녀의 인생 브이로그가 인기를 끌었습니다. 몇 가지 치유의 말과 함께 일러스트레이션 스타일의 애니메이션을 단 며칠 만에 쉽게 익힐 수 있습니다.
