很感谢longdick博主的三篇文章.清晰,容易地了解了JAVA内存模型和GC.在此只是自己用自己的话复述一番!
首先是JAVA内存模型。其实就是空间划分问题。WINDOWS硬盘的空间划分,大家都是很熟悉的,我觉得我使用习惯,无非是把一些东邪分门别类的存放罢了,但是总体结构来看,是个平行交错缠绕的概念。而LINUX呢,一颗树的划分!
JAVA是如何来划分的呢?一:分类,依据对象的生命有:Young(年轻代) Tenured(终身代)在加上一个Perm(永久代)CLASS存放区。这个是大体上的分类,需要注意的是,在JAVA里面,它们都有各自的称谓,这个为的是你可以优调它们的大小比例,但是名称不是你说了算!
分类好了,就引出了另一个问题。如何存放对象?这个就是人如其名了,刚NEW的就到YOUNG,等等。静态方面这个是严格的一一对应的了,是NEW就在NEW 区,绝对不会在别的地方!
静态解决了,如何变化呢?JAVA的策略两个:一GC帮忙,二转移!转移那是很简单的,无非是先看看你空间够不够,够就向你转移罢了。但是注意的是:不是像我们一样可以毫无次序和规则的。转移顺序和像谁转移都是规定好了的!
最麻烦的就是大概就是GC。为什么呢?因为GC是个实体,不像转移只是种策略,因此就在空间和时间上增加了复杂性!这个是非常有必要的,对我们的程序性能瓶颈有很大的影响!
从它存在的实体来讲分两类即:分为Minor GC(次要GC)和 Major GC(主要GC)!那么它们怎么和程序共存和协作呢?三种方式:serial collector,parallel collector,concurrent collector 。其间,在运行期,我可以监控。但是最关心的应该是如何调节其影响!
我这只是泛泛而谈,个人的一点理解而已!
分享到:
相关推荐
标题和描述中提及的知识点主要围绕Java内存模型(JMM),JVM内存结构,包括堆栈讲解,以及本机内存管理等内容。以下是对这些知识点的详细阐述: ### Java内存模型(JMM) #### JMM简介 Java内存模型(JMM)是Java虚拟机...
JAVA内存模型与垃圾回收是Java开发中至关重要的概念,它们直接影响到程序的性能和稳定性。首先,我们来看看Java内存模型。 Java内存模型,通常被称为JVM内存模型,它定义了程序中不同部分如何访问和共享数据。在...
Java内存模型(Java Memory Model,JMM)是Java平台中的一种规范,它定义了线程如何访问和修改共享变量,以及在多线程环境中如何保证数据一致性。JMM的主要目标是解决多线程环境下的可见性、有序性和原子性问题。 ...
Java内存模型(Java Memory Model,JMM)是Java虚拟机(JVM)规范中的一个重要组成部分,它定义了程序中各个变量(包括实例域、静态域和数组元素)的访问规则,以及在实际计算机系统中如何将这些变量存储在内存和从...
Java内存模型(JMM)是Java虚拟机(JVM)规范的一部分,用于定义多线程环境下共享变量的访问规则和操作的可见性。本文将对Java内存模型进行知识汇总,帮助读者更好地理解和掌握相关知识点。 首先,内存模型的概念是...
Java内存模型中的三个代——年轻代、终身代与永久代,是理解Java虚拟机(JVM)内存管理机制的关键。在JDK1.4至JDK6版本中,Java的内存模型由这三大区域组成,各自承担着不同的角色,对垃圾回收(GC)策略有着直接影响。 ...
Java虚拟机(JVM)内存模型是Java编程语言的核心组成部分,它定义了程序运行时的数据区域和内存管理方式。深入理解这一模型对于优化Java应用程序性能、避免内存泄漏以及理解线程安全至关重要。以下是对Java虚拟机...
Java内存模型可以分为七个部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行常量池和直接内存。 一、程序计数器 程序计数器是一块较小的内存空间,可以看作线程所执行的字节码行号指示器。字节码...
Java内存模型,也称为JVM内存结构,主要包括堆内存、栈内存、方法区、程序计数器和本地方法栈五个部分。理解这些区域的工作原理对于进行性能调优至关重要。 - **堆内存**:存储所有类实例和数组,是所有线程共享...
首先,我们要了解Java内存模型。Java虚拟机(JVM)中有三个主要的内存区域:堆内存(Heap)、栈内存(Stack)和方法区(Method Area)。其中,堆内存是Java对象的主要存储场所,栈内存主要存储方法调用时的局部变量...
Java内存模型是Java虚拟机(JVM)中的一种抽象概念,定义了Java程序中变量的访问规则和内存模型的交互关系。 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出...
在理解GC之前,我们先来看一下Java内存模型。Java内存主要分为三个区域:堆(Heap)、栈(Stack)和方法区(Method Area)。其中,堆是GC的主要工作区域,用于存储对象实例;栈则为每个线程分配一个,存放基本类型...
首先,我们需要了解Java内存模型的基础。Java内存主要分为三个区域:堆(Heap)、栈(Stack)和方法区(Method Area)。堆用于存储对象实例,栈用于存储方法调用及局部变量,而方法区则存储类信息、常量、静态变量等...
Java内存管理是Java核心技术的重要组成部分,对于每个开发者来说,理解其工作原理都是十分必要的。这一主题既实用又有趣。以下是对Java内存管理的精彩概述,主要基于Sun Hotspot JVM,但请注意,不同JVM可能有不同的...
Java内存泄露检测是Java开发中一个关键的议题,因为它直接影响到程序的稳定性和资源效率。内存泄露是指程序中已分配的内存无法被正确地释放,从而导致系统资源的浪费和可能导致程序性能下降甚至崩溃。 首先,理解...
在这个主题中,我们将深入探讨Java内存的几个关键方面,包括Java内存模型、垃圾收集机制、内存泄漏以及优化策略。以下是对这些知识点的详细阐述: 1. **Java内存模型(JMM)**: Java内存模型定义了线程之间如何...
Java 实现内存动态分配主要涉及Java内存模型以及内存管理机制,包括堆内存和栈内存的分配,以及垃圾回收等概念。下面将详细解释这些知识点。 1. **Java内存模型** Java程序运行时,内存分为堆内存(Heap)和栈内存...
Java内存模型主要分为三个区域:堆内存(Heap)、栈内存(Stack)和方法区(Method Area),在Java 8及以后版本,还包含了元空间(Metaspace)。每个区域都有其特定的用途: 1. **堆内存**:存储所有对象实例和数组...