【话从这里说起】 在我发表《Lua中的类型与值》这篇文章时,就有读者给我留言了,说:你应该好好总结一下Lua中的function和userdata类型。现在是时候总结了。对于function,我在《Lua中的函数》这篇文章中进行了总结,而这篇文章将会对Lua中的userdata进行仔细的总结。对于文 ...
分类:
其他好文 时间:
2016-11-11 12:13:34
阅读次数:
355
jvm的垃圾(GC)回收机制,我就想java的垃圾不是jvm自己处理吗,不用我们去像过去C,C++似的需要我们程序员来手动处理,这也是jvm的好处,但话是这么说,我却没有弄明白,jvm是怎么样来进行处理的,然后我就百度了一下看了看,发现有四大处理器 1) 标记-清除收集器 Mark-Sweep 2) ...
分类:
其他好文 时间:
2016-11-09 22:43:16
阅读次数:
224
1、什么是内存泄漏 当某些对象不再被应用程序所使用,但是由于仍然被引用而导致垃圾收集器不能释放(Remove,移除) 2、引起内存泄漏的原因 长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露(老年代引用新生代) 2.1 当集合里面的对象属性被修改后,由于hashcode改变当再调用rem ...
分类:
编程语言 时间:
2016-11-09 22:28:52
阅读次数:
261
在上面一篇文章中,介绍了java内存运行时区域,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程生灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着进栈出栈的操作,每一个栈帧中分配着多少内存基本上是在类结构确定下来就已知的,因此这几个区域的内存的分配和回收都具有确定性。在方法接受时内存就已经回收 ...
分类:
其他好文 时间:
2016-11-06 02:46:12
阅读次数:
200
总结:如题。 重点: 1. 注意事项有如下几点: · 大常数 我们要对可能的大常数项保持敏感。 · 非决定性的内循环 内循环是决定性因素的假设并不总是正确的。 · 指令时间 每条指令执行所需的时间总是相同的假设并不总是正确的。 · 系统因素 某种垃圾收集器或是JIT编译器或是正在从因特网中进行的下载 ...
分类:
编程语言 时间:
2016-11-05 17:56:46
阅读次数:
150
跟踪收集器 跟踪收集器采用的为集中式的管理方式,全局记录对象之间的引用状态,执行时从一些列GC Roots的对象做为起点,从这些节点向下开始进行搜索所有的引用链,当一个对象到GC Roots 没有任何引用链时,则证明此对象是不可用的。 下图中,对象Object6、Object7、Object8虽然互 ...
分类:
编程语言 时间:
2016-11-05 12:14:29
阅读次数:
226
前言 在谈内存泄漏这个问题之前先看看JavaScript的垃圾收集机制,JavaScript 具有自动垃圾收集机制,就是找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间)。常用的的方法有两种,即标记清楚和引用计数。 标记清除 Java ...
分类:
其他好文 时间:
2016-11-04 14:20:40
阅读次数:
254
一般的内存分配是指堆上的分配,但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配。对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下直接分配在老年代中,分配的规则并不是百分之百固定的。细节取决于哪一种垃圾收集器组合,还有虚拟机中与内存相关 ...
分类:
编程语言 时间:
2016-11-04 02:10:47
阅读次数:
218
Collectors 类包含许多常见聚合操作的因素,比如累加到集合中、字符串串联、缩减和其他汇总计算,以及创建汇总表(通过groupingBy())。 ...
分类:
编程语言 时间:
2016-11-03 16:25:00
阅读次数:
268
一、问题的提出 Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为 ...
分类:
编程语言 时间:
2016-11-03 11:31:31
阅读次数:
312