1、运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间: 有的区域随着虚拟机进程的启动而存在 有些区域则依赖用户线程的启动和结束而建立和销毁 根据《Java虚拟机规范(Java SE 7版)》的规定,Ja ...
分类:
编程语言 时间:
2016-10-22 18:03:00
阅读次数:
203
1.1 Java的技术体系 Sun官方所定义的Java技术体系包括以下几个组成部分: Java程序设计语言 各种硬件平台上的Java虚拟机 Class文件格式 Java API类库 来自商业机构和开源社区的第三方Java类库 Java程序设计语言、Java虚拟机、Java API类库这三部分统称为J ...
分类:
编程语言 时间:
2016-10-22 17:25:38
阅读次数:
196
《深入理解Java虚拟机》第二三章摘要 Java内存区域与内存溢出 Java虚拟机中的内存分配图: 各个区域的特性总结如下表: 补充说明: 当多线程情形下,可能多个线程要在堆上分配内存,那么可能出现内存分配的同步问题,解决方案有两个,一个就是同步内存分配动作;另一个就是采用TLAB,即在Java堆中 ...
分类:
编程语言 时间:
2016-10-20 07:42:48
阅读次数:
224
常量池中是否有Ljava.lang.Object ...
分类:
编程语言 时间:
2016-10-14 20:49:09
阅读次数:
149
本文为原创,根据《深入理解java虚拟机》和自己的一些理解进行整理,单纯和看其他人的博客感觉不如自己一点点的画和记录来的印象深刻。 JAVA内存模型: 判断对象是否已死(可以回收)的算法 方法区(永久代)回收的相关说明: 垃圾收集的算法: 1、标记 - 清除算法 包含标记和清除2个阶段,是最基础的算 ...
分类:
编程语言 时间:
2016-10-07 01:21:26
阅读次数:
199
最近在看周志明所著的《深入理解Java虚拟机》,有几个问题不太明白,希望大家帮我回答一下。先说一下我进行试验的环境: 1. 我发现在年轻代中,即使我只是一个空类,没有进行任何的内存分配工作,Eden区域内存还是会被占用一部分,例子如下: 虚拟机参数设置: 虚拟机GC情况如下: 问题1:这里是什么占用 ...
分类:
编程语言 时间:
2016-10-05 21:46:07
阅读次数:
276
Java虚拟机所管理的内存包括以下几个运行时数据区: 程序计数器(PCR): 1、是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器 2、为线程私有 3、执行Java方法有PCR,执行native方法时,PCR为空(Undefined) 4、该内存区域不会出现OME(Out Of M ...
分类:
编程语言 时间:
2016-09-26 18:01:32
阅读次数:
199
《深入理解Java虚拟机》一书中将类的加载过程放到了类加载器前面一节,但在这里我想先讲“类加载器”。在上一篇类加载时机中我们用大量篇幅来讲解了类加载过程中的5个步骤的最后一步——初始化。在这一节中,我们实际是在讲解类加载过程5个步骤的第一步——加载。 我们再次回顾类加载过程的5个步骤: 类加载过程的 ...
分类:
其他好文 时间:
2016-09-20 01:35:34
阅读次数:
186
由于道行不够深,所以此篇类加载机制的讲解主要来自于《深入理解Java虚拟机——JVM高级特性与最佳实践》的第7章 虚拟机类加载机制。 在前面《初识Java反射》中我们在开头提到要了解Java反射,就得要了解虚拟机的类加载机制。在这里,我们来试着窥探一下何为类加载。 “虚拟机把描述类的数据从Class ...
分类:
其他好文 时间:
2016-09-19 01:18:15
阅读次数:
204