************* - object 变量名存储在栈里面,存储的是引用地址 ,指向堆里面的对象内容数据; - 内存泄漏 + 发生条件:新对象不断创建,旧对象却不清除; 为了避免内存泄漏,有垃圾及回收机制 - 垃圾回收机制(gc) + 当对象的引用地址在栈中没有引用时,内存占比过高,垃圾回收车 ...
分类:
Web程序 时间:
2019-12-26 09:55:30
阅读次数:
95
垃圾回收: 垃圾回收分为年轻代,年老代,持久代。 新创建的对象属于年轻代,有A、B区,A区满了,就会调用垃圾回收机制,通过引用计数法或者引用可达法就行筛选,没有的进行回收,有用的进行复制,复制到B区。 B区满了,再重复以上操作。 循环15次之后,就会属于年老代,进入年老区,C区,当C区达到一定比例之... ...
分类:
其他好文 时间:
2019-12-25 23:45:19
阅读次数:
83
计时器: 1 public void start() { 2 //定义计时器 3 Timer timer=new Timer(); 4 //定义运行间隔(数字越小,速度越快) 5 int interval=30; 6 //创建定时任务 7 TimerTask task=new TimerTask() ...
分类:
其他好文 时间:
2019-12-25 01:11:04
阅读次数:
115
程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。关于 JVM 的 GC 算法主要有下面四种: 1、引用计 ...
分类:
编程语言 时间:
2019-12-23 20:56:56
阅读次数:
85
线程池概念 简单理解,它就是一个管理线程的池子。 它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需要资源开销的。 提高响应速度。 如果任务到达了,相对于从线程池拿线程,重新去创建一条线程执 ...
分类:
编程语言 时间:
2019-12-23 15:10:25
阅读次数:
82
垃圾回收算法 1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。 在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。 适用场合: 存活对象较多的情况下比较高效 适用于年老代( ...
分类:
编程语言 时间:
2019-12-23 00:31:31
阅读次数:
83
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。 2.导致Full GC的原因 ...
分类:
编程语言 时间:
2019-12-23 00:16:17
阅读次数:
239
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1163 ...
分类:
其他好文 时间:
2019-12-22 14:56:53
阅读次数:
125
JVM部分数据整理 一、运行时数据区域 Java内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【Java堆、方法区】、直接内存(不受JVM GC管理) 1、线程私有部分 1.1、程序计数器 程序计数器(Program Counter Register)一块较小的内存空 ...
分类:
其他好文 时间:
2019-12-21 22:46:38
阅读次数:
81
在《初步了解JVM第一篇》和《初步了解JVM第二篇》中,分别介绍了: 类加载器:负责加载*.class文件,将字节码内容加载到内存中。其中类加载器的类型有如下:执行引擎:负责解释命令,提交给操作系统执行。 启动类加载器(Bootstrap) 扩展类加载器(Extension) 应用程序类加载器(Ap ...
分类:
编程语言 时间:
2019-12-21 20:19:18
阅读次数:
94