Java内存区域 运行时数据区域 程序计数器(Program Counter Register) 较小的内存空间,是当前线程执行的字节码的行号的指示器。字节码解释器通过改变计数器的值来获取下一条字节码指令,分支、循环、跳转、异常处理、线程恢复都靠它完成. 每个线程都有自己的一个计数器,线程之间计数器 ...
分类:
编程语言 时间:
2018-06-21 00:02:58
阅读次数:
181
概念 为了不和数据结构中的栈和堆混淆。本篇博文把Java中的栈称为“栈内存”,把堆称为“堆内存”。 栈内存主要用于存放局部变量和方法调用。局部变量指的是那些在方法中定义的基本类型变量和引用类型变量(即对象的引用变量)。当在一段代码块中定义一个变量时,Java就会在栈中为这个变量分配内存空间,当超过变 ...
分类:
其他好文 时间:
2018-06-17 22:32:21
阅读次数:
202
花了三天在windows上搞openJDK,对bash本来就不熟,加上各种莫名依赖和脚本里的bug,身心俱疲。最后make all的时候产生一个莫名其妙的错误说什么有warning且-Werror置为了true,死活没google到-Werror是什么鬼,只好作罢了。 今天本菜鸟突然想起来,朕还有U ...
分类:
系统相关 时间:
2018-06-12 17:45:21
阅读次数:
220
1.禁止隐式声明 -Werror=implicit-function-declaration 编译选项中加了这个,隐式声明不过,报error而不是warning了 ...
分类:
其他好文 时间:
2018-05-27 16:26:28
阅读次数:
205
一、前言 Java 的 JVM 的内存一般可分为 3 个区:堆(heap)、栈(stack)和方法区(method)。 1.1 堆区 1)存储的全部是对象,每个对象都包含一个与之对应的 Class 的信息,Class 的目的是得到操作指令; 2)JVM 只有一个堆区(heap)被所有线程共享,堆中不 ...
分类:
编程语言 时间:
2018-04-29 22:40:27
阅读次数:
250
前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点。 运行流程 我们都知道java一直宣传的口号是:一次编译,到处运行。那么它如何实现的呢?我们看下图: java程序经过 ...
分类:
其他好文 时间:
2018-03-11 00:31:08
阅读次数:
134
1、stackoverflow: 每当java程序启动一个新的线程时,java虚拟机会为他分配一个栈,java栈以帧为单位保持线程运行状态;当线程调用一个方法是,jvm压入一个新的栈帧到这个线程的栈中,只要这个方法还没返回,这个栈帧就存在。 如果方法的嵌套调用层次太多(如递归调用),随着java栈中 ...
分类:
编程语言 时间:
2018-03-08 13:55:32
阅读次数:
133
1、gcc xxx.c主要包含以下4部分功能: (1) 预处理:主要实现对头文件的包含以及宏替换等 (2) 编 译:主要将高级语言转换为汇编语言 (3) 汇 编:主要将汇编语言翻译成机器指令,得到目标文件 (4) 链 接:主要将目标文件和库文件进行链接,生成可执行文件 2、常见的编译选项 (1) - ...
分类:
其他好文 时间:
2018-01-29 17:40:23
阅读次数:
158
链接BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StopAsyncIteration +-- ArithmeticError | +- ...
分类:
编程语言 时间:
2017-12-22 12:30:52
阅读次数:
134
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间。根据Java虚拟机规范,包括以下几个运行时数据区。 一、程序计数器 内存空间:较小。 作 用:当前线程所执行的字节码的行号指示器。 特性分析:Java虚拟机的多线程的执 ...
分类:
编程语言 时间:
2017-12-16 13:11:43
阅读次数:
226