运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个大小不同的数据域;这些区域都有各自的用途,以及创建和销毁时间,有的区域会随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。程序计数器:程序计数器是一块较小的内存空间,可以看作当前线程所执行的...
分类:
编程语言 时间:
2015-05-19 12:19:05
阅读次数:
208
---恢复内容开始---参考文献:深入理解Java虚拟机 周志明《Java虚拟机规范SE 7版》规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域。如图:程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号指示...
分类:
编程语言 时间:
2015-05-19 00:26:51
阅读次数:
199
最近装了centos7.0 准备用来搭建web服务器。遇到一个问题折腾了很久:在tomcat日志文件中的中文全部为?号,并不是因为linux的编码问题引起的,而是因为启动tomcat的时候需要设置java虚拟机的编码。于是在daemon.sh中加入以下一句解决。JAVA_OPTS="$JAVA_OP...
分类:
其他好文 时间:
2015-05-18 20:14:36
阅读次数:
107
内容:对于任意的一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类空间。只要加载类的类加载器不同的话,那么这个两个类就必定不相等(包括equals()方法,instanceof()方法)。一个简单的例子说明:注意getResourceAsStream的应用:Class.getResourceAsStream(String
pat...
分类:
编程语言 时间:
2015-05-18 16:47:06
阅读次数:
129
Java的函数调用栈就是Java虚拟机栈,它是线程私有的,与线程一同被创建,用于存储栈帧。
栈帧随着方法的调用而创建,随着方法的结束而销毁。可以说栈帧是方法的抽象。
于是,可以通过打印出Java虚拟机栈中的栈帧信息来了解函数调用过程。用于实现这个过程的Java代码如下:
package methodcall;
public class Methods {
public void meth...
分类:
编程语言 时间:
2015-05-17 12:22:19
阅读次数:
488
Java虚拟机内存模型了解Java虚拟机的内存模型,有助于我们明白为什么会发生线程安全问题.上面这幅图是的书中截图.线程共享的变量会保存在主内存中(Main Memory).而线程共享的变量的副本会保存在每个线程各自的工作内存中(Working Memory).线程对于共享变量的所有操作(读取,赋值...
分类:
编程语言 时间:
2015-05-17 12:06:44
阅读次数:
149
文章开始之前,首先需要申明,本系列文章讨论的是HotSpot VM,文章中多数观点基于《深入理解Java虚拟机:JVM高级特性与最佳时间 周志明》,笔者如有理解错误,欢迎指正。
在开始探索jvm虚拟机之前,不得不对jvm的内存区域进行讨论,依旧先附上图表:
程序计数器
程序计数器,也能叫做PC寄存器,从名字上来理解可能会把它想成一个计数的内存区域,但是,了解汇编的人会知道...
分类:
其他好文 时间:
2015-05-16 20:35:12
阅读次数:
162
Dalvik虚拟机存在于Android系统,JVM是Java虚拟机,两者都是虚拟机,它们之间有什么区别呢?本文就对两者进行比较,讲述它们的不同。
1.定义:
Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种...
分类:
移动开发 时间:
2015-05-16 09:18:23
阅读次数:
266
在C++中,程序员拥有每一个对象的所有权,但与此同时还肩负着释放对象内存空间的责任;而Java由于有了虚拟机的帮助,程序员拥有对象的所有权的同时不再需要释放对象的内存空间。由于是JVM自动进行对象内存的释放,所以内存泄漏和内存溢出的问题也很少出现。Java虚拟机在运行时将内存空间分成5个部分,分别是:方法区、虚拟机栈、本地方法栈、堆、程序计数器。程序计数器
本质
程序计数器本质上是一块较小的内存空...
分类:
编程语言 时间:
2015-05-15 21:34:05
阅读次数:
170
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” 、“非堆”, ?它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX...
分类:
编程语言 时间:
2015-05-15 16:00:57
阅读次数:
134