Java虚拟机内存原型寄存器:在程序中无法控制栈:存放基本类型的数据和对象的引用,但是对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放变量非RAM存储:硬盘等永久存储空间Java内存分配中的栈栈的基本单位是帧(或栈帧):每当一...
分类:
编程语言 时间:
2015-04-14 16:20:48
阅读次数:
131
对Mat工具的详细介绍,引用博文:http://my.oschina.net/biezhi/blog/286223下载地址:http://www.eclipse.org/mat/downloads.php官网介绍:http://www.eclipse.org/mat/
分类:
编程语言 时间:
2015-04-13 18:22:31
阅读次数:
146
java虚拟机所管理的内存包括以下几个运行时数据区域,如图所示:
既:程序计数器,Java虚拟机栈,本地方法栈,Java堆和方法区。
程序计数器是一块较小的内存空间,他可以看作是当前线程执行的字节码的行号指示器。
由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时间,一个处理器(对于多核处理器来说是一个内核)都只会执行一个线程中的指令。因此...
分类:
编程语言 时间:
2015-04-12 21:08:15
阅读次数:
185
转载出处:http://www.infoq.com/cn/articles/java-memory-model-2数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之...
分类:
编程语言 时间:
2015-04-12 11:58:00
阅读次数:
125
原文地址:http://www.infoq.com/cn/articles/java-memory-model-1并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线...
分类:
编程语言 时间:
2015-04-12 00:01:00
阅读次数:
360
1. 可见性如果一个线程对共享变量值的修改,能够及时的被其他线程看到,叫做共享变量的可见性。如果一个变量同时在多个线程的工作内存中存在副本,那么这个变量就叫共享变量2. JMM(java内存模型)多个线程同时对主内存的一个共享变量进行读取和修改时,首先会读取这个变量到自己的工作线程成为一个副本中,改...
分类:
编程语言 时间:
2015-04-11 23:49:29
阅读次数:
243
点击打开杭电2549
Problem Description
Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had.
Marge: Yeah, what is it?
Homer: Take me for example. I want to find...
分类:
编程语言 时间:
2015-04-11 17:58:38
阅读次数:
179
Java虚拟机规范中试图定义一种java内存模型(java Memory Model,jmm)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的内存访问效果。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量...
分类:
编程语言 时间:
2015-04-11 17:38:52
阅读次数:
151
jinfo:可以输出并修改运行时的java 进程的opts。? jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。? jstat:一个极强的监视VM内存工具。可以用来监视VM内...
分类:
编程语言 时间:
2015-04-11 13:26:59
阅读次数:
178
一、Java内存回收机制不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的(还有克隆),这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释...
分类:
编程语言 时间:
2015-04-08 23:07:22
阅读次数:
165