java内存区域 程序计数器 因为java可以多线程并发执行,因此,为了线程切换后能恢复到正确的执行位置,每个线程都需要一个独立的程序计数器。记录正在执行的虚拟机字节码指令的地址。 这个区域不会产生内存溢出异常。 栈 java虚拟机栈 栈中主要存放了编译期可知的四类八种基本数据类型存(逻辑型 boo ...
分类:
其他好文 时间:
2018-07-21 19:51:49
阅读次数:
200
垃圾回收机制 示例代码: gc的测试类,基础date就是为了输出方便带了时间,冲洗了finalize方法,在执行垃圾回收的时候调用 垃圾收集算法是垃圾收集器的理论基础,而垃圾收集器就是其具体实现。下面介绍HotSpot虚拟机提供的几种垃圾收集器。 Serial/Serial Old 最古老的收集器, ...
分类:
编程语言 时间:
2018-07-21 14:47:32
阅读次数:
166
1. Java虚拟机的架构 1.1 Java的NIO库允许Java程序使用直接内存,访问直接内存的速度优于Java堆。出于性能的考虑,读写频繁的场合会考虑使用直接内存。 1.2 本地方法栈和Java栈非常类似,最大的不同在于Java栈用于Java方法的调用,而本地方法栈用于本地方法的调用。 1.3 ...
分类:
其他好文 时间:
2018-07-20 22:27:02
阅读次数:
189
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编 ...
分类:
编程语言 时间:
2018-07-20 21:41:48
阅读次数:
240
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method) 栈区: 每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区中 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 栈分 ...
分类:
编程语言 时间:
2018-07-18 20:31:10
阅读次数:
153
前言 简单的针对JAVA虚拟机(JVM)相关知识做一个总结,从此章开始这是一个系列文章,包括内容有; 1 前端编译,AOT(静态编译),JIT即时编译 2 字节码文件的结构,类加载机制以及运行时内存区域 3 关于对象的创建,内存的分配,访问的定位,判断对象是否可用,内存的回收 4 对象内存分配及垃圾 ...
分类:
其他好文 时间:
2018-07-18 17:19:46
阅读次数:
147
新生代收集器 Serial收集器 它是最基本、历史最悠久的收集器,在JDK1.3.1之前是虚拟机新生代收集的唯一选择。它是一个单线程的收集器,到现在为止,它依然是虚拟机运行在Client模式下的默认的新生代收集器。优点:简单高效。 特点:只会使用一个CPU或一条收集线程去完成垃圾收集工作,在进行垃圾 ...
分类:
编程语言 时间:
2018-07-18 15:15:08
阅读次数:
177
jvm内存模型由方法区,堆、虚拟机栈、本地方法栈、程序计数器, 1.程序计数器 每个线程都会有自己私有的程序计数器,可以看做当前线程所执行的字节码的行号指示器。 字节码解释器就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程上下文切换。 线程恢复时,都要依赖 ...
分类:
其他好文 时间:
2018-07-18 14:23:49
阅读次数:
139
这一节穿插一点如何在eclipse中配置并查看某个Java应用GC日志的知识点,我也是通过调研知道的,因为书中写的不是很详细,主要是为下一节做准备。 一、eclipse中配置GC 在eclipse中如果要给某个应用配置GC日志,首先右击该应用(main方法所在的类)->Run As->Run Con ...
分类:
编程语言 时间:
2018-07-18 01:11:40
阅读次数:
788
1.前言 本文归纳一下对Java内存管理机制的理解,尽可能通俗易懂,知识来自于深入理解Java虚拟机一书。 2.起源 计算机简单理解就是根据执行计划,通过参数得到结果。执行计划就是程序了,参数就是实际变量,最终运行得到我们要的结果。磁盘由于其廉价且持久化,用于保存程序和数据,但是受制于执行速度,内存 ...
分类:
编程语言 时间:
2018-07-17 19:52:25
阅读次数:
202