前言
从短期来看,程序员的确算是个不错的工作,薪水也比一般岗位高很多;但是从长远来看,程序员的中年危机会比其他岗位来的更早,很多程序员只有到了35岁左右,才能真正认清楚互联网行业,尤其是被裁之后,找工作无门的这种无奈。很多人说那只是你技术不过关,又或者没有管理能力,但实际上又有多少程序员在35岁能当上高管呢?
最近在职场论坛上看到这样一个帖子:37岁程序员被裁,120天没找到工作,面试华为阿里均被拒,无奈降薪去小公司后蒙了!这是怎么回事呢?
文章图片
1. Java 堆空间
**发生频率:**5颗星
造成原因
- 无法在 Java 堆中分配对象
- 吞吐量增加
- 应用程序无意中保存了对象引用,对象无法被 GC 回收
- 应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守护线程调用,有时 finalizer 线程的处理能力无法跟上结束队列的增长
单位对应:GB -> G, g;MB -> M, m;KB -> K, k
- 使用 -Xmx 增加堆大小
- 修复应用程序中的内存泄漏
**发生频率:**5颗星 造成原因
- Java 进程98%的时间在进行垃圾回收,恢复了不到2%的堆空间,最后连续5个(编译时常量)垃圾回收一直如此。
- 使用 -Xmx 增加堆大小
- 【程序员|全靠这套面试题,Java高级工程师每日面试题精选】使用 -XX:-UseGCOverheadLimit 取消 GC 开销限制
- 修复应用程序中的内存泄漏
**发生频率:**2颗星
造成原因
- 应用程序试图分配一个超过堆大小的数组
- 使用 -Xmx 增加堆大小
- 修复应用程序中分配巨大数组的 bug
**发生频率:**3颗星 造成原因 Perm gen 空间包含:
- 类的名字、字段、方法
- 与类相关的对象数组和类型数组
- JIT 编译器优化
解决方案
- 使用 -XX: MaxPermSize 增加 Permgen 大小
- 不重启应用部署应用程序可能会导致此问题。重启 JVM 解决
**发生频率:**3颗星 造成原因
- 从 Java 8 开始 Perm gen 改成了 Metaspace,在本机内存中分配 class 元数据(称为 metaspace)。如果 metaspace 耗尽,则抛出异常
- 通过命令行设置 -XX: MaxMetaSpaceSize 增加 metaspace 大小
- 取消 -XX: maxmetsspacedize
- 减小 Java 堆大小,为 MetaSpace 提供更多的可用空间
- 为服务器分配更多的内存
- 可能是应用程序 bug,修复 bug
**发生频率:**5颗星 造成原因
- 内存不足,无法创建新线程。由于线程在本机内存中创建,报告这个错误表明本机内存空间不足
- 为机器分配更多的内存
- 减少 Java 堆空间
- 修复应用程序中的线程泄漏。
- 增加操作系统级别的限制
- ulimit -a
- 用户进程数增大 (-u) 1800
- 使用 -Xss 减小线程堆栈大小
**发生频率:**1颗星 造成原因
- 内核任务:内存不足结束器,在可用内存极低的情况下会杀死进程
- 将进程迁移到不同的机器上
- 给机器增加更多内存
8. 发生 stack_trace_with_native_method
**发生频率:**1颗星 造成原因
- 本机方法(native method)分配失败
- 打印的堆栈跟踪信息,最顶层的帧是本机方法
Spring全套教学资料 Spring是Java程序员的《葵花宝典》,其中提供的各种大招,能简化我们的开发,大大提升开发效率!目前99%的公司使用了Spring,大家可以去各大招聘网站看一下,Spring算是必备技能,所以一定要掌握。
资料领取方式:点击这里前往蓝色传送门
目录:
文章图片
文章图片
部分内容:
文章图片
文章图片
Spring源码
- 第一部分 Spring 概述
- 第二部分 核心思想
- 第三部分 手写实现 IoC 和 AOP(自定义Spring框架)
- 第四部分 Spring IOC 高级应用
基础特性
高级特性 - 第五部分 Spring IOC源码深度剖析
设计优雅
设计模式
注意:原则、方法和技巧 - 第六部分 Spring AOP 应用
声明事务控制 - 第七部分 Spring AOP源码深度剖析
必要的笔记、必要的图、通俗易懂的语言化解知识难点
文章图片
文章图片
脚手框架:SpringBoot技术
它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。
Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。
- SpringBoot入门
- 配置文件
- 日志
- Web开发
- Docker
- SpringBoot与数据访问
- 启动配置原理
- 自定义starter
文章图片
文章图片
微服务架构:Spring Cloud Alibaba
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
- 微服务架构介绍
- Spring Cloud Alibaba介绍
- 微服务环境搭建
- 服务治理
- 服务容错
- 服务网关
- 链路追踪
- ZipKin集成及数据持久化
- 消息驱动
- 短信服务
- Nacos Confifig—服务配置
- Seata—分布式事务
- Dubbo—rpc通信
文章图片
文章图片
Spring MVC 目录:
文章图片
文章图片
文章图片
部分内容:
文章图片
文章图片
ring MVC
目录:
[外链图片转存中…(img-T5Xjoqpe-1621229491300)]
[外链图片转存中…(img-v5gAlWhD-1621229491300)]
[外链图片转存中…(img-3hYY6gAY-1621229491301)]
部分内容:
[外链图片转存中…(img-29sABZBQ-1621229491302)]
[外链图片转存中…(img-O2pDfcME-1621229491303)]
推荐阅读
- 程序员|Java高级工程师每日面试题精选,一文全懂
- 领域驱动在本地生活的实践
- Java|吊打级的福利,BAT上班是种什么样的体验 ?
- java人生|毕业两年月薪36k,人与人的差距比人和狗还大
- JAVA人生|春招来了,这波神仙打架你要不要参战
- 程序人生|和哥们一起去面试,公司用了他没用我
- #|Session详解,学习Session,这篇文章就够了(包含底层分析和使用)
- Java基础|彻底搞懂Session和Cookie
- #|【手写Tomcat】10.实现对静态资源的放行(完结篇)