JVM学习
文章平均质量分 74
漏断人初静v
菜鸟渴望成为大牛。。。。。
展开
-
转载 java 堆栈的区别
注:博客来源点击打开链接 http://blog.csdn.net/chengyingzhilian/article/details/7781858Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用转载 2016-12-06 14:08:28 · 223 阅读 · 0 评论 -
什么是常量池
常量池定义 在《深入理解java虚拟机》中说:常量池是一个可变长度的有序序列。综合以后,我理解为:常量池是独立与堆、栈的存储空间,它的出现是为了快捷的创建某些对象。以提高其执行效率。需要注意的是常量池是存在与class文件中的。常量池中包含了什么?常量池中包含了代码所定义的各种基本类型(double)原创 2016-12-06 14:34:52 · 2422 阅读 · 0 评论 -
Java运行时的数据区域
Java语言不同于C,C++,需要开发人员手动的管理内存,java虚拟机的自动内存管理机制,可以有效的减轻开发人员的压力。不过出现内存溢出的问题也不易排查。程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟的概念模型里,字节码解释器工作就是通过改变这个计数器的值 来选取下一条需要执行的字节码指令、分支、循环、跳转、异常处理、线程回复等原创 2017-01-07 21:42:36 · 218 阅读 · 0 评论 -
JAVA虚拟机中对象创建
注:本人的博客内容是在阅读《深入理解Java虚拟机》[周志明 著]后进行写的。Java中对象的创建java是一门面向对象的编程语言,所以对象在开发过程中时时刻刻都在被创建。开发过程中创建对象的方式很简单,使用new关键字就可以创建。但是虚拟机创建对象的过程是怎样的。【java对象对应到内存就是一块固定大小的内存区域,所以创建对象就是在堆内存中分配一块固定大小的内存空间,并做好对这块内存原创 2017-01-08 13:47:20 · 231 阅读 · 0 评论 -
java虚拟机中的对象
对象的访问定位建立对象是为了使用对象,我们的java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方法也取决于虚拟机实现而决定的。目前主流的访问方式有使用句柄和直接指针俩种。使用句柄:java堆中会划分出一块内存原创 2017-01-08 21:04:34 · 234 阅读 · 0 评论 -
OutOfMemaryError异常
在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。java堆溢出 java堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么对象数量达到最大容量限制后就会产生内存溢出异常。 例如:public class HeapOOM { st原创 2017-01-10 22:01:14 · 1137 阅读 · 0 评论 -
jvm中的垃圾收集算法
Java虚拟机会回收已经失效的对象,判断对象是否失效使用的是可达性分析算法,那么JVM是对失效的对象的回收过程是怎样做的呢,它的算法实现是怎样的呢?【本人现能力不足,只能理解这几种回收算法的思想,无法写出它们的代码实现,如果可以,本人将在后续完成它的代码实现】标记——清除算法标记清除算法是最基础的收集算法,它的执行过程分为俩步:标记、清除。首先是要标记出所有可以被回收的对象原创 2017-01-16 18:59:45 · 421 阅读 · 0 评论