目录 1.什么是JMM 2.JMM的主内存和工作内存 3.JMM如何解决可见性问题-指令重排序 4.Volatile 十、JMM(Java内存模型)(暂时没有理解) 1.什么是JMM 2.JMM的主内存和工作内存 (1)主内存 (2)工作内存 (3)主内存和工作内存数据存储类型以及操作方式归纳 (4 ...
分类:
编程语言 时间:
2019-02-11 20:00:02
阅读次数:
213
一、虚拟机参数配置 1、Java堆参数设置 a)下面是一些简单的使用参数 其中最后一个是一个运行时参数设置的简单实例。一般-XX是系统级别的配置(日志信息,或者是配置使用什么样的垃圾回收器等等),后面跟上+表示启用。不是-XX基本上是对于应用层面的配置信息 下面是一个简单的实例:表示设置初始堆大小为 ...
分类:
编程语言 时间:
2019-02-11 18:32:53
阅读次数:
247
一:java内存区域 jvm布局: jdk1.6版本JVM布局分为:heap(堆),method(方法区),stack(虚拟机栈),native stack(本地方法栈),程序计数器共五大区域。 其中方法区包含运行时常量池。堆和方法区是线程共享的,虚拟机栈和本地方法栈、程序计数器是随线程而创建的。 ...
分类:
其他好文 时间:
2019-02-08 20:12:08
阅读次数:
135
一、JVM运行时数据区域概述 Java相比较于C/C++的一个特点就是,在虚拟机自动内存管理机制的帮助下,我们不需要为每一个操作都写像C/C++一样的delete/free代码,所以也不容易出现内存泄漏和内存溢出的问题。显然,这里的不容易只是相对而言的,如果我们想要降低这种代码隐患的发生,就需要对J ...
分类:
编程语言 时间:
2019-02-08 19:53:05
阅读次数:
217
源代码完成后,就可以编译生成可执行文件,负责实现该功能的是编译器。用某种编程语言编写的程序就称为源代码,编译器负责转换源代码。 程序加载时会生成栈和堆,栈是用来存储函数内部临时使用的变量,以及函数调用时所用的参数的内存区域,堆是用来存储程序运行时的任意数据及对象的内存领域。栈和堆的内存空间都是在程序 ...
分类:
其他好文 时间:
2019-02-05 20:51:11
阅读次数:
175
缓冲区(Buffer) 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区: 使用缓冲区有这么两个好处: 1、减少实际的物理读写次数 2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的 ...
分类:
其他好文 时间:
2019-02-03 12:52:24
阅读次数:
165
一.需要回收的内存区域 程序计数器、虚拟机栈、本地方法栈 3 个区域随线程生灭(因为是线程私有),栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。而 Java 堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处 ...
分类:
编程语言 时间:
2019-01-31 22:52:36
阅读次数:
237
50.1 共享内存 50.1.1 共享内存的概念 共享内存区域是被多个进程共享的一部分物理内存 多个进程都可把该共享内存映射到自己的虚拟内存空间。所有用户空间的进程若要操作共享内存,都要将其映射到自己虚拟内存空间中,通过映射的虚拟内存空间地址去操作共享内存,从而达到进程间的数据通信 共享内存是进程间 ...
分类:
系统相关 时间:
2019-01-27 21:49:48
阅读次数:
241
在说堆和栈之前,我们先说一下JVM(虚拟机)内存的划分: Java程序在运行时都要开辟空间,任何软件在运行时都要在内存中开辟空间,Java虚拟机运行时也是要开辟空间的。JVM运行时在内存中开辟一片内存区域,启动时在自己的内存区域中进行更细致的划分,因为虚拟机中每一片内存处理的方式都不同,所以要单独进 ...
分类:
编程语言 时间:
2019-01-26 12:33:05
阅读次数:
213
java内存区域 Java虚拟机执行java程序时会将管理的内存划分为若干个区域: 1. 程序计数器 程序计数器是一个”线程私有“的内存区域,用于获取下一条需要执行的字节码指令,如分支、循环、跳转等。 2. Java虚拟栈 在Java内存划分的时候,经常会听到将其分为”堆内存“和”栈内存“,这种分法 ...
分类:
编程语言 时间:
2019-01-21 22:50:30
阅读次数:
200