深入理解Java Virtual Mechine
Garbage Collector Gc tuning
简历:熟悉GC常用算法,熟悉常见垃圾收集器,具有实际JVM调优实战经验
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 - 应用线程只管分配,垃圾回收器负责回收
标签:释放,Java,Mechine,Virtual,GC,内存,线程 From: https://www.cnblogs.com/saulblogs/p/17029352.html