Java虚拟机在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有自各的用途,以及创建及销毁时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(第2版)》规定,Java虚拟机管理的内存区域包括以下几个运行时数据区域,下如图
1.程序计数器(Program Counter Register)
...
分类:
编程语言 时间:
2014-12-05 17:26:15
阅读次数:
246
Console
此类包含多个方法,可访问与当前 Java 虚拟机关联的基于字符的控制台设备(如果有)。
虚拟机是否具有控制台取决于底层平台,还取决于调用虚拟机的方式。如果虚拟机从一个交互式命令行开始启动,且没有重定向标准输入和输出流,那么其控制台将存在,并且通常连接到键盘并从虚拟机启动的地方显示。如果虚拟机是自动启动的(例如,由后台作业调度程序启动),那么它通常没有控制台。
如果此虚拟机具...
1,都是java虚拟机,Dalivik是android下的java虚拟机;2,JVM是基于栈的架构,而Dalivik是基于寄存器的架构(CPU的一部分),因此Dalivik提升了应用程序执行的速度;3,JVM的运行过程:将编写好的.java文件,通过jdk的javac命令编译成.class文件(.c...
分类:
其他好文 时间:
2014-12-05 00:24:40
阅读次数:
185
堆内存设置 原理 JVM堆内存分为2块:Permanent?Space 和 Heap Space。 Permanent 即?持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + N...
分类:
编程语言 时间:
2014-12-03 14:34:04
阅读次数:
256
注:刚读完《深入理解Java虚拟机》的类文件这一章,梳理一下思路。在此之前我只知道源文件.java需要先进行javac编译成为.class文件。那么.class这个类文件是如何保存的呢?看一遍书都是浑浑噩噩搞不太明白,看了三遍大概知道是怎么存储了。原来就是用的表和无符号数,u1,u2,u4,u8, ...
分类:
编程语言 时间:
2014-12-03 07:03:10
阅读次数:
197
第4章 虚拟机性能监按与故障处理工具jps 虚拟机进程状况工具jstat 虚拟机统计信息监视工具 JVM Statistics Monitoring Tool jstat [ option vmid [interval[s|ms] [count]] jstat -gc 2764 250 20 ...
分类:
编程语言 时间:
2014-12-03 01:36:23
阅读次数:
210
1、概述2、对象已死吗?引用计数器 给对象添加一个引用计数器,每当有引用时,计数器加1,引用失效时,计数器减1;任何时刻计数器为0的对象就是不可能再被使用的。 若对象是循环引用,则无法处理。JVM不使用。可达性分析算法 通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜...
分类:
编程语言 时间:
2014-12-03 00:12:31
阅读次数:
181
第2章 Java内存区域与内存溢出异常运行数据区域 1、程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 2、Java虚拟机栈(Stack)线程私有,每一个方法调用时都会创建一个栈帧(Stack Frame)用.....
分类:
编程语言 时间:
2014-12-02 14:58:41
阅读次数:
177
1.资源对象没关闭造成的内存泄漏
描述:
资源性对象比如(Cursor,File文件等)往往都用了一些缓冲,我们在不使用的时候,应该及时关闭它们,以便它们的缓冲及时回收内存。它们的缓冲不仅存在于 java虚拟机内,还存在于java虚拟机外。如果我们仅仅是把它的引用设置为null,而不关闭它们,往往会造成内存泄漏。因为有些资源性对象,比如 SQLiteCursor(在析构函数finalize()...
分类:
移动开发 时间:
2014-11-29 14:41:09
阅读次数:
212
作为一名java初学者,我发现网上对Java内存这部分知识讲解粗细不一、深浅不定,理解起来难度较大。于是,自己动手整理了一份资料,以供交流学习。Java的编程环境如图所示。从上图可以看出,Java虚拟机是程序运行的场所。那么什么是虚拟机呢?要理解Java虚拟机,你首先必须意识..
分类:
编程语言 时间:
2014-11-28 18:39:12
阅读次数:
416