Java Virtual Mechine
Java Virtual Mechine
Garbage Collector Gc tuning
1.what is garbage?
lost pointer
2.how to find it?
reference count(python)


Root reaching

3.GC algorithms

4.available collectors
GC随着内存的大小不断增长而演进
几兆 - 几十兆:Serial单线程STW垃圾回收 年轻代 老年代
几十兆 - 上百兆1G:parallel并行多线程(JDk1.8默认)
数十G:Concurrent GC(CMS+ParNew)

新生代和老年代

5.tuning
冯诺依曼结构的计算机体系:

程序是如何运行的:从硬盘load to memory形成进程,进程包括指令和数据。cpu将内存中的指令一条一条拿去执行,需要数据就拿数据。
程序的栈(栈帧stack frame)和堆
栈:每个线程一个,先进后出。栈帧:每个方法一个,方法结束,栈空间自动释放。
堆:执行过程中手工new出来的,不会自动释放需要垃圾回收器来管理

最难调试的bug
野指针:同一个对象,存在两个指针一个释放了,另一个不知道还在使用(不在指向任何对象的指针)NullPointerExcetion
并发问题:多线程访问同一块内存空间
语言的发展历史
C/C++:
手工管理 malloc free / new delete
忘记释放 - memory leak 内存泄漏 - out of memory
释放多次 产生及其难以调试的bug,一个线程空间莫名其妙被另外一个释放了
开发效率很低
Java python go
方便内存管理的语言
GC - Garbage Collector - 应用线程只管分配,垃圾回收器负责回收

浙公网安备 33010602011771号