首先感谢强大的网络资源,本博文是根据网络上的各种资源进行整合,然后加入自己的理解而成,可能会与其它网络资源有重复,望其他作者多多包涵。由于初学java,如有不准确的描述还请读者指正。下面正式切入正题:众所周知,java和C++都是面向对象的编程语言,但是与C++相比,jav..
分类:
编程语言 时间:
2015-03-17 16:04:04
阅读次数:
129
程序计数器
指令执行的指示器.
每个线程都有独立的程序计数器,互无影响,我们称这类区域为线程私有的内存.
执行Java方法,计数器记录的是正在执行的虚拟机字节码指令地址;如果执行的是native方法,这个计数器为空.
此内存区域唯一一个没有规定任何OutOfMemoryError的区域.
虚拟机栈
Java虚拟机栈也是线程私有的,它的生命周期与线程相同.
虚拟机栈描述的是Java方法执行的内存模型:...
分类:
编程语言 时间:
2015-03-17 10:27:53
阅读次数:
176
Java虚拟机运行时数据区
运行时数据区主要包括:方法区、堆、虚拟机栈、本地方法栈、程序计数器。
其中方法区和栈是线程共享的区域,另外三块区域是每个线程私有的区域。各个数据区的功能简单说明如下:
程序计数器:当前线程所执行的字节码的行号指示器。
虚拟机栈:描述Java方法执行的内存模型——每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法...
分类:
编程语言 时间:
2015-03-13 22:24:59
阅读次数:
223
http://www.cnblogs.com/preftest/archive/2011/12/08/2281322.htmljava内存溢出分析工具:jmap使用实战 在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap。 1 使用命令 在环境是linux+jdk1.5以....
分类:
编程语言 时间:
2015-03-13 12:32:21
阅读次数:
177
1:在java中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享。 2:局部变量、方法定义参数和异常处理器参数不会在线程之间共享 3:java线程之间的通信由Java内存模型(本文简称为JMM)控制,...
分类:
编程语言 时间:
2015-03-12 22:46:47
阅读次数:
211
深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间...
分类:
编程语言 时间:
2015-03-12 09:45:41
阅读次数:
202
java内存分两种:栈内存和堆内存栈用来存储基本类型变量和指向对象的引用类型变量,对象本身总是在堆中被创建堆内存用来存放由new创建的对象和数组以及成员变量堆内存被所有线程共享,但每个线程有自己的栈
分类:
编程语言 时间:
2015-03-11 19:54:53
阅读次数:
237
本文中,我们讨论一个问题:如何计算(或者说,估算)一个Java对象占用的内存数量?
通常,我们谈论的堆内存使用的前提是以“一般情况”为背景的。不包括下面两种情形:
某些情况下,JVM根本就没有把Object放入堆中。例如:原则上讲,一个小的thread-local对象存在于栈中,而不是在堆中。被Object占用内存的大小依赖于Object的当前状态。例如:Object的同步锁是...
分类:
编程语言 时间:
2015-03-09 20:56:22
阅读次数:
138
运行时数据区域:
线程私有:
1.程序计数器
如果正在执行的方法为Native方法,程序计数器值为空。
2.java虚拟机栈
虚拟机栈描述java方法执行的内存模型:每个方法被执行时会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口。从方法的调...
分类:
编程语言 时间:
2015-03-09 17:40:15
阅读次数:
151
出现这种报错的原因:JAVA的堆栈设置太小。
解决方法:设置JVM参数,让java程序在运行的时候,可以拥有更多的堆栈内存。
如下:
在VM arguments中设置VM参数,也就是允许的堆栈内存大小为:-Xms1024m -Xmx1024m。
默认为64M,太小了,一些大的程序无法运行,我们这里设置为1024M,程序...
分类:
编程语言 时间:
2015-03-09 10:59:00
阅读次数:
195