一个 Java 源程序文件,会被编译为字节码文件(以 class 为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM 程序的运行入口,再被 JVM 通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢? 概括地说来,JVM初始运行的时候都会分配好Metho ...
分类:
其他好文 时间:
2019-04-01 00:43:02
阅读次数:
155
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,C ...
分类:
其他好文 时间:
2019-03-21 17:33:35
阅读次数:
149
-server -XX:PermSize=256M -XX:MaxPermSize=1024m ...
分类:
其他好文 时间:
2019-03-21 11:52:47
阅读次数:
157
在运行Java程序的时候,JVM需要使用内存存放各式各样的数据,JVM规范将这部分内存叫做 运行时数据区 。 ...
分类:
编程语言 时间:
2019-03-16 23:17:56
阅读次数:
156
java深浅拷贝 一、前言 为什么会有深浅拷贝这个概念? 我觉得主要跟JVM内存分配有关,对于基本数据类型,只存在栈内存,所以它的拷贝不存在深浅拷贝这个概念。而对于对象而言,一个对象的创建会在内存中分配两块空间,一个在栈内存存对象的引用指针,一个在堆内存存放对象。这个时候会有一个问题,你拷贝的只是这 ...
分类:
编程语言 时间:
2019-03-14 00:35:48
阅读次数:
200
1.static关键字 经由static关键字修饰的成员为类成员,被所有对象所共享,通常通过类名来引用static成员。类加载的连接阶段将会为静态成员变量在jvm内存的方法区分配空间,并在类的初始化阶段赋初值。 一个类的static成员变量只有“一份”(存储在方法区),无论该类创建了多少对象。看如下 ...
分类:
编程语言 时间:
2019-03-12 18:02:35
阅读次数:
155
1. JVM内存模型 Java虚拟机在程序执行过程会把jvm的内存分为若干个不同的数据区域来管理,这些区域有自己的用途,以及创建和销毁时间。 先来看一下Java程序具体执行的过程 上图中的运行数据区(Runtime Data Areas)即为JVM内存区域,其结构如下图: 各区域存储的具体信息: 1 ...
分类:
编程语言 时间:
2019-03-12 16:53:36
阅读次数:
228
jvm内存模型 1.执行过程 Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间 ...
分类:
其他好文 时间:
2019-03-08 16:58:44
阅读次数:
206
面向对象进阶 JVM内存分配 1.xxx.java xxx.class (编译器进行) 2.xxx.class 类加载器(三种) 在内存分配空间 3.JVM会将内存分为5块① 栈: Java栈区域比较小,空间大约1M,特点:(存取数据)速度非常快,在栈里边执行的基本上都是快速的任务:基本数据类型和对 ...
分类:
其他好文 时间:
2019-03-06 13:23:41
阅读次数:
154
前几期简单介绍了一些线程方面的基础知识,以及一些线程的一些基础用法以及通过jvm内存模型的方式去介绍了一些并发中常见的问题(想看往期文章的小伙伴可以直接拉到文章最下方飞速前往)。本文重点介绍一个概念“无锁” 本期精彩什么是无锁无锁类的原理AtomicIntegerUnsafeAtomicRefere ...
分类:
其他好文 时间:
2019-03-05 23:21:03
阅读次数:
336