网站首页 > java教程 正文
问题:centos 服务器启动java服务,没有看到info日志输出,查看控制台日志
error='Cannot allocate memory'
一、初步判断是JVM内存不足导致不能启动
二、根据日志提示查看具体日志信息
vi /home/parklot/ipcp-svc-parklot/hs_err_pid16196.log
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 357564416 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_linux.cpp:2640), pid=16196, tid=0x00007ff04f0a9700
#
# JRE version: (8.0_181-b13) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.181-b13 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
Memory: 4k page, physical 7878740k(120500k free), swap 8126460k(0k free)
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.181-b13) for linux-amd64 JRE (1.8.0_181-b13), built on Jul 7 2018 00:56:38 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
time: Tue Apr 13 13:31:27 2021
elapsed time: 0 seconds (0d 0h 0m 0s)
根据hs_err_pid16196.log文件提供的信息知道应用可用的交换区内存已经是0KB;
三、使用top命令查看服务器内存使用情况
四、进一步结论
到现在很明显我们可以得出是应用启动不了由于服务器的内存不足造成。
五、内存不足的原因推测
推测:内存不够用分两种情况
推测 1:
JAVA程序使用的内存申请超出了JVM分配的, 此类只会抛出
java.lang.OutOfMemoryError: Java heap space,JAVA进程是不会有影响,下次也可以继续接受请求提供服务。
推测 2:
JVM尝试去向操作系统申请一块内存超出系统的可使用(RSS)内存时, 此时linux会结束JAVA进程,并抛出如上错误。
这种场景也常见: 如在一台16G内存的服务器上跑着两个服务,两个服务同时启动各自分配10G内存,因为JVM的垃圾回收机制一般情况下是不会有问题,能正常服务,当两个服务同时需要用到的内存超出16G时,将会被linux干掉一个服务.
(注: JVM启动时,通过-Xmx等参数分配的内存只会影响到VIRT)
根据上面的推测和日志信息,服务器出现内存不足的原因是符合第二种推测2.具体验证这个推测的测试实验过程,请看另外的一篇文章。
- 上一篇: 好热啊,来个冷笑话凉快凉快吧
- 下一篇: 迷宫搜索类的双向bfs问题(例题详解)
猜你喜欢
- 2025-01-21 迷宫搜索类的双向bfs问题(例题详解)
- 2025-01-21 好热啊,来个冷笑话凉快凉快吧
- 2025-01-21 不努力提高效率,小姐姐都被人追走了:K8S一键部署了解一下?
- 2025-01-21 搜索引擎概述
- 2025-01-21 线程池中各个参数如何合理设置
- 2025-01-21 java Math类和Random类的用法
- 2025-01-21 「offerMe——刷题必备」java如何实现开根号的运算
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)