说到Java,一定绕不开GC,尽管不是Java首创的,但Java一定是使用GC的代表。GC就是垃圾回收,更直接点说就是内存回收。是对内存进行整理,从而使内存的使用尽可能大的被复用。 一直想好好写一篇关于GC的文章,可是却发现要写的东西太大了,不是一篇博客能简单的介绍完的。所以打算拆分成若干篇博客,一 ...
分类:
编程语言 时间:
2018-05-15 01:49:43
阅读次数:
229
首先要明确一点内存泄漏和内存溢出一般常常出现在C或者C++编程中,像高级语言java之类的,他们有GC垃圾回收机制,所以一般不会出现内存泄漏问题。 内存泄漏: 通过new ,malloc 等申请内存,但是使用完之后又没有通过delete,free等来释放掉内存,从而导致内存泄漏。 内存溢出: 一个i ...
分类:
其他好文 时间:
2018-04-08 15:52:47
阅读次数:
127
章来源:https://zhuanlan.zhihu.com/p/25539690 Java的性能优化,整理出一篇文章,供以后温故知新。 JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world 。它会在任何一种GC算法中发生。stop-the-w ...
分类:
编程语言 时间:
2018-03-16 18:48:05
阅读次数:
192
JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象。这些对象的建立方式就是那些new一类的操作,当对象无用后,是GC来负责这个无用的对象(地球人都知道)。 JVM堆 (1) 新域:存储所有新成生的对象 ...
分类:
其他好文 时间:
2018-03-02 20:48:08
阅读次数:
199
引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Android内存管理, Dalvik/ART等知识有一个理论的认识, 可以让我们更好的使用这些工具, 分析内 ...
分类:
移动开发 时间:
2018-02-25 19:17:16
阅读次数:
294
1. finalize的作用 finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。 finalize()与C++中的析构函数不是对应的。C++中的析构函数调用的时机是确定的(对象离开作用域或delete掉),但Java中的f ...
分类:
移动开发 时间:
2018-02-25 19:14:39
阅读次数:
249
开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍。首先,我们为什么要学习垃圾回收的机制,我大概归纳了一下几点: 1.方便我们理解什么样的对象,什么时候,会被系统回收掉 2.有助于我们后面的内存优 ...
分类:
移动开发 时间:
2018-02-25 19:11:41
阅读次数:
217
1、哪些对象可回收? 可行性分析算法 通过一系列GC Roots(®1)作为起始点,其到对象之间的引用(®2)称为引用链,当对象到GC Roots之间不存在引用链相连, 则此对象是不可用的。如下,Object5,Object6,Object7被判定为可回收对象。 2、怎么回收? 3、方法区回收: a ...
分类:
编程语言 时间:
2018-02-12 13:57:43
阅读次数:
232
Java 垃圾回收(Garbage Collection,GC) Java支持内存动态分配、垃圾自动回收,而 C++ 不支持。我想这可能也是 为什么 Java 脱胎于 C++ 的一个原因吧。 GC 的历史 GC 的历史比 Java 更久远,比如 1960 年诞生的于 MIT 的 就是第一门真正使用内 ...
分类:
编程语言 时间:
2017-12-25 11:36:27
阅读次数:
190
1. 简介 在上一篇介绍<Java GC - 垃圾回收机制>, 本文将介绍如何监控 Javc GC 行为,同时涉及一些GUI工具的使用(虽然有些已经很老并不再更新),监控GC在于判断JVM是否在良好高效地工作并且是否需要投入性能调优(主要包括应用程序优化与JVM参数优化),关注的数据大概有: 1. ...
分类:
编程语言 时间:
2017-12-20 14:08:14
阅读次数:
236