自动内存管理机制
1 虚拟机栈:存放某个函数方法中得局部变量,为虚拟机执行java方法服务。为线程私有的内存
2 本地方法栈:栈,为调用native方法的服务。
3 java堆:存放所有得对象实例,java虚拟机器所管理得内存中最大得一块。java堆被所有线程共享。垃圾回收管理的主要区域。
4 方法区:存放已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。常被hotspot作为永久代处理
5 运行时常量池:方法区的一部分。存放编译时生产的各种字面值和符号引用。
6 直接内存:jdk使用native函数库直接分配的对外内存,在java堆中分配的对应操作这块区域的引用的区域,叫做直接内存。
7:内存溢出设定
-Xms:20M 设定堆内存大小
-XX:Persize=15M -XX:MaxPermSize=256M 方法区内存大小
-XX:MaxDirectMemorySize=10M 直接内存大小
8:虚拟机对象
对象创建:正确划分可用空间,保障划分空间的原子性(CAS、TLAB)
对象内存布局:对象头、实例对象、对齐补充。
对象的访问:通过栈上的reference数据来操作堆上的对象。
分为两种方式:
通过句柄
通过直接指针:
9 OutOfMemeroy
java堆:-XX调节堆大小
内存泄露:有GC Roots的引用路径。则,根据引用链路确定对应的泄露代码位置。
内存溢出:没有到GC Roots的引用链路。则,需要检查对应的对参数是否合适。-Xmx与-Xms
栈:-Xss调节栈大小
StackOutOfMemory异常:栈深度溢出。
OutOfMemeryError:栈空间不足溢出
方法区:-XX:PermSiz -XX:MaxPerSzie 设置方法区值和最大值。
OutOfMemory:PermGen space 方法区(老年代)溢出
直接内存区 -XX:MaxDirectMemorySize指定直接内存。
相关推荐
《深入理解Java虚拟机JVM高级特性与最佳实践》是一本专注于Java开发人员提升技术水平的著作,由周志明撰写。这本书旨在填补Java技术体系中关于Java虚拟机(JVM)知识的空白,帮助读者深入理解JVM的工作原理及其对...
作者以易于理解的方式深入揭示了java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益! 本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行...
《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...
这是自己读《深入理解Java虚拟机》时候用XMind建立的思维导图,目的是为了能够帮助自己整理、梳理相关的知识以及方便自己日后的回顾,帮助自己建立起关于JVM的知识体系,里边也有一些对相关内容的补充,通过备注的...
3. **垃圾收集与内存管理**:Java虚拟机中的垃圾收集机制是自动进行内存管理的关键。书里介绍了不同的垃圾收集算法(如标记-清除、复制、标记-整理、分代收集等)以及垃圾收集器(如Serial、ParNew、CMS、G1等),...
Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作...
深入理解java虚拟机视频教程,jvm原理,java虚拟机,jvm性能调优,内存模型,gc工作原理,内存分配,类的加载等等视频教程
- **内存溢出与内存泄漏**:当内存耗尽或无法合理分配时,可能出现溢出;内存泄漏指对象不再使用但未被释放,占用内存持续增长。 - **内存优化**:通过调整JVM参数,如堆大小、新生代和老年代比例、GC策略等,以提高...
《深入理解Java虚拟机(第二版)》还详细讨论了JVM的其他重要主题,如异常处理、反射、类加载器自定义、线程与同步、JVM调优工具的使用等。通过阅读本书,读者不仅可以深化对Java技术的理解,还能提升解决问题的能力...
了解jvm的pdf,高清pdf,希望大家下载
深入 Java 虚拟机.pdf Java 虚拟机(Java Virtual Machine,JVM)是 Java 语言的 runtime 环境,是 Java 程序执行的核心组件。它提供了一个平台无关的环境,允许 Java 程序在不同的操作系统和硬件平台上运行。 一...
根据提供的文件标题、描述、标签以及部分内容,我们可以深入探讨与Java虚拟机(JVM)相关的多个核心知识点。以下是对这些主题的详细阐述: ### Java虚拟机(JVM)概述 Java虚拟机(JVM)是一种用于执行Java字节码的...
虽然《深入JAVA虚拟机》的第二版可能在物理形态上有些许不足,但其内容依然对理解JVM的运作机制有着重要的指导意义。学习这些知识点,有助于Java开发者提升代码的运行效率,解决内存问题,以及进行性能优化。
虚拟机栈区是 JVM 的一个私有内存区域,每个线程都需要有一个独立的虚拟机栈,用于存储局部变量、操作数栈、动态链接、方法出口等信息。虚拟机栈的生命周期与线程相同,每个方法从调用直至执行完成的过程,就对应着...
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种...Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机(JVM)是Java程序运行的基础,它提供了执行环境和各种内存区域,以支持Java代码的高效运行。本地方法栈是JVM的一部分,它主要负责处理与本地方法(通常是由C或C++编写)相关的调用。本地方法栈在Java线程...
### 学习深入理解Java虚拟机的前几章笔记 #### JVM内存模型 Java虚拟机(JVM)的内存模型主要分为两大类:线程共享区和线程私有区。 ##### 线程共享区 - **堆**:是所有线程共享的内存区域,在这里存放着对象实例...
这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述中提到内容为图片形式,但我们可以从其主题和标签中提炼出许多关于JVM的重要知识点。...
诸葛_BAT面试之深入理解Java虚拟机_9