jvm技术

:是一块共享区域,用来存放对象和数组。 堆分为新生代、老生代、永久代。

垃圾回收的方法有:标记清除法(将标记为垃圾的空间进行清除)、标记整理法(将标记为有用的空间进行向前移动)、复制算法(先将空间一分为二,先将有用的空间复制到右边,将左边垃圾清除,然后再将右边的东西复制回左边)、分代收集算法。

垃圾收集器种类:
在这里插入图片描述
在新生代工作的垃圾回收器:Serial, ParNew, ParallelScavenge

在老年代工作的垃圾回收器:CMS,Serial Old, Parallel Old

同时在新老生代工作的垃圾回收器:G1

面向服务端的垃圾回收器主要是G1和CMS。

垃圾收集器参数总结:

收集器设置:
-XX:+UseSerialGC:年轻串行(Serial),老年串行(Serial Old)
-XX:+UseParNewGC:年轻并行(ParNew),老年串行(Serial Old)
-XX:+UseConcMarkSweepGC:年轻并行(ParNew),老年串行(CMS),备份(Serial Old)
-XX:+UseParallelGC:年轻并行吞吐(Parallel Scavenge),老年串行(Serial Old)
-XX:+UseParalledlOldGC:年轻并行吞吐(Parallel Scavenge),老年并行吞吐(Parallel Old)

收集器参数:
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

:线程是私有的,每个方法执行时都会创建一个栈帧(Stack Frame),用来存储局部变量表、操作数栈、动态链接、方法出口等信息。

本地方法栈: 调用window/linux 系统的本地方法。

方法区:是一块共享的内存区域,它用于存储虚拟机加载的类,常量,静态变量,即时编译器编译后的代码等数据。

程序计数器:程序执行到哪行。