一.JVM内存管理 1.1JVM运行时数据区 1.1.1程序计数器:记录当前线程正在执行的字节码指定的地址(行号) 为什么需要它:程序容易被打断 1.1.2虚拟机栈:存储当前线程运行方法时所需要的数据、指令、返回地址 1.1.3本地方法栈:和虚拟机栈类似,存储的是native方法 1.1.4方法区: ...
分类:
编程语言 时间:
2019-01-06 15:36:48
阅读次数:
236
首先JVM的内存结构包括五大区域: 程序计数器、虚拟机栈、本地方法栈、方法区、堆区。其中程序计数器、虚拟机栈和本地方法栈3个区域随线程启动与销毁, 因此这几个区域的内存分配和回收都具有确定性,不需要过多考虑回收的问题。而Java堆区和方法区则不一样,这部分内存的分配和回收是动态的,正式垃圾回收需要关 ...
分类:
其他好文 时间:
2019-01-06 00:03:59
阅读次数:
200
Item5:消除过期对象的引用 JVM为我们实现了GC(垃圾回收)的功能,让我们从手工管理内存中解放了出来,这固然很好,但并不意味着我们就再也不需要去考虑内存管理的事情了;我们用简单的栈实现的例子来解释: 这段程序没有什么明显的错误,无论怎么测试,结果似乎都是正确的,但不严格的讲,这段程序存在"内存 ...
分类:
编程语言 时间:
2019-01-06 00:02:10
阅读次数:
195
关于Java的GC垃圾回收过程中,一些概念和过程的整理和理解。 1.1 堆 堆(Heap)是Java虚拟机中内存最大的一块区域,被所有线程共享,主要存放对象实例。 1.2 栈 栈(Stack)是线程私有的,生命周期与线程相同。每个方法在执行时都会创建一个栈帧用于存储局部变量表,操作数帧,方法出口信息 ...
分类:
其他好文 时间:
2019-01-05 18:12:32
阅读次数:
195
在java中,大致有以下几种引用类型,强引用(StrongReference)、软引用(SoftReference)、弱引用(WeakReference)、虚引用(PhantomReference) 强引用-FinalReference 强引用是平时最常见的,类似诸如 这个a就是强引用类型,最主要的 ...
分类:
其他好文 时间:
2019-01-05 16:43:35
阅读次数:
161
Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection) 单例模式能够保证一个类仅有唯一的实例,并提供一个全局访问点。 ...
分类:
其他好文 时间:
2019-01-05 13:39:18
阅读次数:
177
Java语言的一大特点就是可以自动进行垃圾回收处理,无需开发人员过于关注系统资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。一个不合适的垃圾回收方法和策略将会对系统性能造成不良影响 ...
分类:
编程语言 时间:
2019-01-04 14:54:15
阅读次数:
171
Python的垃圾回收机制 引子: 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,而变量名是访问到变量值的唯一方式,所以当一个变量值没有关联任何变量名时,我们就无法再访问到该变量值了,该变量值就是一个垃圾会被Python ...
分类:
编程语言 时间:
2019-01-03 21:36:27
阅读次数:
190
一、内存泄露1、正常的链表操作下面程序建立一个10元素的链表,输出它们的节点,每个节点是一个员工的工号和年龄。最后删除每个节点,释放列表。dp@dp:~/memorytest%cat1.c#include<stdlib.h>#include<stdio.h>//code:myhaspl@myhaspl.com//author:myhaspl//date:2014-01-10
分类:
其他好文 时间:
2019-01-02 20:43:56
阅读次数:
177
[toc] Python对象循环引用 我们来介绍一下 Python 是采用何种途径解决循环引用问题的。 循环引用垃圾回收算法 上图中,表示的是对象之间的引用关系,从自对象指向他对象的引用用黑色箭头表示。 每个对象里都有计数器 。而图中右侧部分可以很清晰的看到是循环引用的垃圾对象。 上图,将每个对象的 ...
分类:
编程语言 时间:
2019-01-02 01:30:15
阅读次数:
312