程序计数器:作用可以看成当前线程所执行的字节码的行号指示器。为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储。---线程私有
虚拟机栈:描述JAVA方法执行的内存模型,每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口灯信息。每个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。局部变量表存放了编译期可知的各种基本数据类型和对象引用类型,所需内存空间在编译期间完成分配。---线程私有
虚拟机栈中的两种异常状况:如果线程请求的栈深度大于虚拟机允许的深度,抛出StackOverflowError;如果虚拟机栈可以动态扩展,当扩展无法申请到足够的内存时抛出OutOfMemoryError。
本地方法栈:为虚拟机使用到的Native方法服务。---线程私有
JAVA堆:是被所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例以及数组都要在堆中分配,垃圾收集器管理的主要区域。
方法区:存储被虚拟机加载的类信息(类名、访问修饰符、字段描述、方法描述等)、常量、静态变量、即时编译器编译后的代码等数据。垃圾收集器主要是针对该区域的常量的回收和对类型的卸载。
运行时常量池(属于方法区部分):存放编译期生成的各种字面量和符号引用。动态性:运行期间也可能将新的常量放入池中,如String类的intern()方法。
直接内存:堆外内存,新IO类中引入的机遇通道Channel与缓冲的I/O方式,使用Native函数库直接分配对外内存。
配置参数:
- -Xnoclassgc 关闭类垃圾回收功能
- -Xincgc 开启类的垃圾回收功能
- –Xms<size> 设置JVM初始化堆内存大小
- –Xmx<size> 设置JVM最大的堆内存大小
- –Xss<size> 设置JVM栈内存大小
分享到:
相关推荐
#### 二、Java内存结构概述 Java程序在运行时,其内存空间被划分为多个不同的区域,以满足不同的数据管理和计算需求。下面详细介绍这些内存区域: 1. **程序计数器(Program Counter Register)** - **定义**:这是...
### Java视频学习总结知识点 #### 抽象方法与抽象类 在Java中,抽象方法是一种没有具体实现(方法体)的方法,它仅提供方法签名,而具体的实现留给子类完成。一个类如果包含一个或多个抽象方法,那么这个类必须被...
Java数据结构是编程基础中的重要组成部分,它涉及到如何在计算机内存中组织和管理数据,以高效地执行各种操作。...这份“java数据结构总结”无疑是深入学习Java数据结构的好资料,值得好好珍藏和学习。
这篇文档是个人的Java学习笔记总结,旨在帮助0基础的学习者从零开始掌握Java基础知识,并逐步成为专业的Java开发者。以下是笔记中涉及的一些关键知识点: 1. **Java开发环境的设置**: 要开始Java编程,首先需要...
【Java编程:清华大学学生的学习心得】 在Java编程领域,清华大学的学生以其严谨的学术态度和扎实的编程基础闻名。这份由清华大学学生编写的“Java笔记”文档,无疑为我们提供了一个宝贵的资源,展示了他们学习Java...
资源摘要信息是关于Java数据结构和算法的知识点总结,涵盖了数组、栈与队列、链表、递归、哈希表、高级排序、二叉树、红黑树、堆、带权图等数据结构和算法概念。 一、数组 * 数组是相同类型变量的集合,可以使用...
总结来说,Java IO流是一个庞大的体系,覆盖了从基础的文件操作到复杂的网络通信,理解并熟练掌握这一部分将极大地提升Java开发者的技能。通过学习和实践,开发者可以灵活地处理各种数据输入输出场景,为应用程序...
这篇博客“JAVA内存泄漏问题处理方法经验总结”分享了作者在处理此类问题时的一些实用技巧和经验,结合源码分析和工具使用,对于Java开发者来说是非常有价值的。 首先,了解内存泄漏的基本概念是至关重要的。内存...
Java内存主要分为堆内存和栈内存。堆内存存储对象实例,而栈内存存储方法调用时的局部变量。此外,Java还引入了方法区(非持久代)和程序计数器,以支持多线程和方法执行。 线程管理是Java并发编程的基础。Java提供...
总结,深入理解Java内存分配原理意味着深入理解Java运行机制,这将帮助开发者编写出更高效、更健壮的代码,提升系统的整体性能和稳定性。通过学习和实践,开发者可以更好地应对内存溢出、性能瓶颈等问题,从而成为...
首先,我们来谈谈Java对象的内存结构。每个Java对象都由三部分组成:对象头、实例数据和对齐填充。对象头包含指向类元数据的指针以及用于同步和垃圾回收的标记。实例数据是对象实际存储的字段值。对齐填充可能存在于...
Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...
Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了多个方面,包括语法、面向对象特性、异常处理、多线程...以上只是Java基础知识的一个概述,每个话题都值得深入探讨和实践,不断学习和总结是提升技能的关键。
1. **JVM内存结构** JVM内存分为几个关键区域:方法区(Method Area)、堆(Heap)、栈(Stack)、程序计数器(PC Register)和本地方法栈(Native Method Stack)。每个区域都有特定的用途: - **方法区**:存储...
总结来说,"Java数据结构分析+Java程序员面试宝典"是一套全面的资源,旨在帮助Java开发者提升技能,成功应对面试挑战。通过对数据结构的深入学习和算法的实践,以及对面试技巧的掌握,你将更有信心地面对未来的Java...
这是本文精心搜集的关于java方面的深入学习的资料合集,包括 how tomcat works中文版367页pdf j2ee教程2010ppt java并发编程培训(阿里巴巴)ppt java反射机制总结pdf java数据结构上机实践指导教程pdf java网络编程...
在Java编程语言中,数据结构是程序设计的基础,它涉及到如何高效地组织和管理数据,以便于执行各种操作。...通过这样的实验报告,学习者能够深入理解数据结构及其在Java中的应用,从而提高编程技能和解决问题的能力。
### Java学习总结:C程序员的感悟 #### 第一章:Java入门(C与Java的差异) ##### 基本数据类型: Java的数据类型与C语言相比,在命名上有一定区别,例如整型在C中为`int`,而在Java中也为`int`,但Java的数据...