jvm的垃圾回收是个老生常谈的问题,在这里,我会从以下一个方面来和大家聊聊垃圾回收。
1 在哪里收垃圾?
2 哪些内容可认为是垃圾?
3 怎么回收垃圾?
4 gc报告的阅读
在哪里收垃圾
这里,我建议大家先读一下拙作: java内存管理
上图中的5部分:
虚拟机栈,本地方法栈,程序计数器三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行...
分类:
编程语言 时间:
2015-08-20 13:17:52
阅读次数:
209
java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下:
其中方法区和堆是由所有线程共享的数据区。
Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区。
(1).程序计数器:
是一块较小的内存空间,其作用可以看作是当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程...
分类:
编程语言 时间:
2015-08-20 01:34:28
阅读次数:
155
参考:http://blog.csdn.net/kthq/article/details/8618052http://www.jdon.com/idea/jvm.html写的很好很详细,总结学习心得如下:1 内存分类jvm的内存从功能上可以分为四类:方法区本地方法栈用户栈用户堆其中:方法区:也被称为...
分类:
其他好文 时间:
2015-08-18 15:46:22
阅读次数:
118
JVM内存管理和JVM垃圾回收? JVM内存组成结构 JVM内存结构由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分...
分类:
编程语言 时间:
2015-08-11 21:38:02
阅读次数:
147
JVM在执行java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途和创建、销毁时间。有些区域随着虚拟机的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范1.7》规定,Java虚拟机所管理的内存分为以下几个区域:
程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池、直接内存
程序计数器
是一块较小的内存...
分类:
其他好文 时间:
2015-08-09 20:47:15
阅读次数:
132
我们经常说的垃圾收集(Grabage Collection,GC)需要确定以下三个事情:哪些内存需要回收?
什么时候回收?
如何回收?
在这三件事情之前,我们先看看为什么要进行垃圾收集?
因为程序中存在的实例对象,变量等信息如果不进行垃圾回收的话,随着程序的运行,必然会带来程序性能的下降,造成卡、慢甚至系统异常。
哪些内存需要回收?
前面我们说到了程序计数器、虚拟机栈、本地方法栈三个区域是线程隔离...
分类:
其他好文 时间:
2015-08-06 02:05:25
阅读次数:
192
Java虚拟机是Java程序运行的基础,也是深入理解java的必备知识。
首先JVM的内存分布主要有:程序计数器,虚拟机栈,本地方法栈,Java堆,方法区。其中标红的表示相对更重要。
1)程序计数器
程序计数器是一块很小的内存,是每一块线程的私有空间,主要负责为每一个线程记录下一条需要运行的指令。如果当前线程正在执行一个Java方法,则程序计数器记录正在执行的Java字节码地址,如果...
分类:
其他好文 时间:
2015-08-05 10:29:59
阅读次数:
116
这个也分为两大部分 1、是线程共享区域 ·线程共享区域又包括两部分Heap(堆)和方法区(Perm) 2、是线程独享区域 这个也包括两大部分程序计数器和栈 栈(又包括两部分:VM 栈和本地方法栈)
分类:
其他好文 时间:
2015-08-04 19:04:46
阅读次数:
100
范围:要回收哪些区域
在JVM五种内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。因为它们的生命周期是和线程同步的,随着线程的销毁,它们占用的内存会自动释放,所以只有方法区和堆需要进行GC。
前提:如何判断对象已死
所有的垃圾收集算法都面临同一个问题,那就是找出应用程序不可到达的内存块,将其释放,这里面得不可到达主要是指应用程序已经没有内存块的引用了, 在...
分类:
其他好文 时间:
2015-07-22 09:26:16
阅读次数:
183
概述
运行时数据区域
程序计数器
Java虚拟机栈
本地方法栈
Java堆
方法区
运行时常量池
直接内存
hotspot虚拟机对象探秘
对象的创建
对象的内存布局
对象的访问定位概述
Java程序员不需要自己去手动释放内存,而C、C++程序员就需要自己去操作了,原因是Java虚拟机帮我们完成了这个动作,所以我们也要了解jvm的机制,这样出问题后才会知道它到底是什么情况。本章介绍JVM内存各个区...
分类:
编程语言 时间:
2015-07-14 17:59:21
阅读次数:
163