• Java内存模型与volatile关键字

     发表于 3 年 前

    Java内存模型(JMM),不同于Java运行时数据区,JMM的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中读取数据这样的底层细节。JMM规定了所...

  • 动手探究Java内存泄露问题

     发表于 3 年 前

    在本系列教程中,将带大家动手探究Java内存泄露之谜,并教授给读者相关的分析方法。以下是一个案例。 ...

  • JAVA的内存模型及结构

     发表于 3 年 前

    所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢? ...

  • Java的内存回收机制

     发表于 3 年 前

    在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这 两方面工作都是由JVM自动完成的,降低了Java程序员的学习难度,避免了像C/C++直接操作...

  • Java中堆内存和栈内存详解

     发表于 3 年 前

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。 ...

  • Java 堆内存

     发表于 3 年 前

    Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old...

  • Java内存溢出详解

     发表于 3 年 前

    一、常见的Java内存溢出有以下三种: 1.java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出...

  • Java内存模型深度解析:基础部分

     发表于 3 年 前

    在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信...

  • Java内存模型深度解析:重排序

     发表于 3 年 前

    如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型...

  • Java内存模型深度解析:顺序一致性

     发表于 3 年 前

    数据竞争与顺序一致性保证 当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下: ...

  • Java内存模型深度解析:volatile

     发表于 3 年 前

    当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单...

  • Java内存模型深度解析:锁

     发表于 3 年 前

    锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。 ...

  • Java内存模型深度解析:总结

     发表于 3 年 前

    顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对 顺序一致性模型做一些放松,因为如果完全按...

  • Java内存模型深度解析:final

     发表于 3 年 前

    与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则...

  • Java内存的原型及工作原理深度剖析

     发表于 4 年 前

    本文主要通过分析Java内存分配的栈、堆以以及常量池详细的讲解了其的工作原理。 ...

  • Java内存泄露的理解与解决

     发表于 4 年 前

    在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记...

  • Java内存溢出实例总结

     发表于 4 年 前

    java 虚拟机规范规定的 java 虚拟机内存其实就是 java 虚拟机运行时数据区...

  • Java内存管理

     发表于 4 年 前

    首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!! ...