如何判断一个对象是否存活 引用计数算法:给对象中添加一个引用计数器,每当有引用它时,计数器值就加1;当引用 失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用。 Java虚拟机里面没有选用引用计数算法来管理内存,其中主要原因是他很难解决对象 之间相互引用的问题。 例如:对象objA和 ...
分类:
编程语言 时间:
2017-02-14 15:08:18
阅读次数:
205
JVM性能调优JVM垃圾回收与性能调优总结JVM调优的几种策略一、JVM内存模型及垃圾收集算法1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内..
分类:
其他好文 时间:
2017-01-09 16:51:46
阅读次数:
182
1. 前言 Java和C++之间显著的一个区别就是对内存的管理。和C++把内存管理的权利赋予给开发人员的方式不同,Java拥有一套自动的内存回收系统(Garbage Collection,GC)简称GC,可以无需开发人员干预而对不再使用的内存进行回收管理。 垃圾回收技术(以下简称GC)是一套自动的内 ...
分类:
其他好文 时间:
2016-12-30 02:39:11
阅读次数:
254
GC中的垃圾:特指存在于内存中、不会再使用的对象。 内存泄漏和内存溢出的区别: 内存泄漏:内存空间忘记回收,垃圾对象永远无法被回收 内存溢出:垃圾对象(不满足回收条件)所耗内存持续上升,导致内存溢出。 1 常用的垃圾回收算法 引用计数法、标记压缩法、标记清除法、复制算法和分代、分区 1)引用计数法: ...
分类:
编程语言 时间:
2016-12-19 08:42:32
阅读次数:
235
原文 https://www.ibm.com/developerworks/cn/java/j-lo-JVMGarbageCollection/ 再插一个关于线程和进程上下文,待判断 http://blog.sina.com.cn/s/blog_75e9551f01016cm3.html 垃圾收集基 ...
分类:
其他好文 时间:
2016-11-27 19:21:51
阅读次数:
209
一、串行JDK1.5前的默认算法缺点是只有一个线程,执行垃圾回收时程序停止的时间比较长语法-XX:+UseSerialGC新生代、老年代使用串行回收新生代复制算法老年代标记-压缩示例图测试代码 //-Xmx20m -Xms20m -Xmn2m -XX:+UseSerialGC -XX:+PrintG... ...
分类:
编程语言 时间:
2016-11-25 12:13:04
阅读次数:
348
Java语言出来之前,大家都在拼命的写C或者C++的程序,而此时存在一个很大的矛盾,C++等语言创建对象要不断的去开辟空间,不用的时候有需要不断的去释放控件,既要写构造函数,又要写析构函数,很多时候都在重复的allocated,然后不停的~析构。于是,有人就提出,能不能写一段程序在实现这块功能,每次 ...
分类:
编程语言 时间:
2016-11-20 23:02:52
阅读次数:
259
一:CPU 1. 用户态CPU是指执行应用程序代码的时间占总CPU时间的百分比。 系统态CPU是指应用执行操作系统调用的时间占总CPU时间的百分比。系统态CPU高意味着共享资源有竞争或者I/O设备之间有大量的交互。 提高应用性能和扩展性的一个目标就是尽可能降低系统态CPU使用率。 2. CPU运行队... ...
分类:
编程语言 时间:
2016-11-13 19:14:34
阅读次数:
254
1.系统崩溃前的一些现象: 每次垃圾回收的时间越来越长,由之前的10ms延长到50ms左右,FullGC的时间也有之前的0.5s延长到4、5s FullGC的次数越来越多,最频繁时隔不到1分钟就进行一次FullGC 年老代的内存越来越大并且每次FullGC后年老代没有内存被释放 之后系统会无法响应新 ...
分类:
其他好文 时间:
2016-11-13 07:39:06
阅读次数:
150