机器内存问题
1 内存泄漏:指程序中用malloc或new申请了一块内存,但是没有用free或delete将内存释放,导致这块内存一直处 于占用状态。
2.内存溢出:指程序申请了10M的空间,但是在这个空间写入10M以上字节的数据,就是溢出。
3.内存不足:OOM
给应用分配内存太少:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。
应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。
使用的解决办法:
1. 限制java进程的max heap,并且降低java程序的worker数量,从而降低内存使用
2. 给系统增加swap空间
进程的基本状态
1.创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和 管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态;
2.就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行;
3 .执行状态:进程处于就绪状态被调度后,进程进入执行状态;
4 .阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻 塞。在满足请求时进入就绪状态等待系统调用; .
5.终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行;
进程类型:
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转化
孤儿进程
如果在子进程在退出前,父进程先退出,这时子进程将成为孤儿进程,因为它的父进程已经死了。孤儿 进程会被PID=1的systemd进程收养,成为systemd的子进程。
注意,孤儿进程还会继续运行,而不会随父进程退出而终止,只不过其父进程发生了改变。