问题:
Java进程被终止了,然后在应用的目录中发现了hs_err_pid日志。

运维反馈,结论是内存不够了

之前一直运行没有问题,没什么新增访问量,为什么会内存溢出,进程被killer掉类?

1.第一反应看日志:

hs_err_pid,内容如下:

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 65536 bytes for committing reserved memory.
# Possible reasons:
# The system is out of physical RAM or swap space
# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# JVM is running with Unscaled Compressed Oops mode in which the Java heap is
# placed in the first 4GB address space. The Java Heap base address is the
# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress
# to set the Java Heap base and to place the Java Heap above 4GB virtual address.
# This output file may be truncated or incomplete.
#
# Out of Memory Error (os_linux.cpp:2798), pid=15490, tid=0x00007f47859bc700
#
# JRE version: OpenJDK Runtime Environment (8.0_262-b10) (build 1.8.0_262-b10)
# Java VM: OpenJDK 64-Bit Server VM (25.262-b10 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
# --------------- T H R E A D --------------- Current thread (0x00007f47b4196800): JavaThread "C2 CompilerThread0" daemon [_thread_in_vm, id=15500, stack(0x00007f47858bd000,0x00007f47859bd000)] Stack: [0x00007f47858bd000,0x00007f47859bd000], sp=0x00007f47859b85a0, free space=1005k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0xb5718d] VMError::report_and_die()+0x15d
V [libjvm.so+0x50675a] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0xaa
V [libjvm.so+0x93d3f8] os::pd_commit_memory(char*, unsigned long, unsigned long, bool)+0xd8
V [libjvm.so+0x93457e] os::commit_memory(char*, unsigned long, unsigned long, bool)+0x2e
V [libjvm.so+0xb53d94] VirtualSpace::expand_by(unsigned long, bool)+0x1b4
V [libjvm.so+0x61d15c] CodeHeap::expand_by(unsigned long)+0x6c
V [libjvm.so+0x48e0e6] CodeCache::allocate(int, bool)+0x46
V [libjvm.so+0x4865db] BufferBlob::create(char const*, int)+0x8b
V [libjvm.so+0x48b0e1] CodeBuffer::initialize(int, int)+0x21
V [libjvm.so+0x951a62] Compile::init_buffer(unsigned int*)+0x212
V [libjvm.so+0x959201] Compile::Output()+0x351
V [libjvm.so+0x4ae738] Compile::Code_Gen()+0x4e8
V [libjvm.so+0x4b23ce] Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool)+0x116e
V [libjvm.so+0x407e88] C2Compiler::compile_method(ciEnv*, ciMethod*, int)+0x1d8
V [libjvm.so+0x4b9cb2] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x8d2
V [libjvm.so+0x4ba980] CompileBroker::compiler_thread_loop()+0x510
V [libjvm.so+0xafe902] JavaThread::thread_main_inner()+0x212
V [libjvm.so+0x93a382] java_start(Thread*)+0xf2
C [libpthread.so.0+0x7ea5] start_thread+0xc5 Current CompileTask:
C2:859196826 31212 4 org.hibernate.engine.query.spi.HQLQueryPlan::<init> (382 bytes) --------------- P R O C E S S --------------- Java Threads: ( => current thread )

用jcmd  -l 查看JVM 参数如下:

输入:

sudo  -u gitlab-runner jcmd 28102 help
VM.native_memory
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
VM.classloader_stats
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.finalizer_info
GC.heap_info
GC.run_finalization
GC.run
VM.uptime
VM.dynlibs
VM.flags
VM.system_properties
VM.command_line
VM.version
help

输入:

sudo  -u gitlab-runner jcmd 28102 VM.command_line
VM Arguments:
jvm_args: -Xms1200m -Xmx1200m
java_command: xxx.jar --spring.profiles.active=prod
java_class_path (initial): xxxxxx.jar
Launcher Type: SUN_STANDARD

而物理机的内存为:

3.8G

现在的疑惑是内存在没什么访问的情况下,究竟为什么会内存爆掉?内存泄漏?

(未完待续)

Java 8 在使用内存爆了以后会发生什么?hs_err_pid 日志如何看?的更多相关文章

  1. java的GC与内存泄漏

    从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...

  2. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  3. JAVA基础知识点:内存、比较和Final

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  4. java程序运行时内存分配详解 (转)

    转自:http://www.tuicool.com/articles/uU77v2 一.  基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Ja ...

  5. [转]使用Java Mission Control进行内存分配分析

    jdk7u40自带了一个非常好用的工具,就是Java Mission Control.JRockit Misson Control用户应该会对mission control的很多功能十分熟悉,JRoc ...

  6. Java是如何管理内存的?

    本文转自CSDN用户Kevin涂腾飞的文章java内存管理机制:http://blog.csdn.net/tutngfei1129287460/article/details/7383480 JAVA ...

  7. Java虚拟机学习 - 体系结构 内存模型

    一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” .“非堆”, 它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB,最 ...

  8. 方法:Linux 下用JAVA获取CPU、内存、磁盘的系统资源信息

    CPU使用率: InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTok ...

  9. Java宝典(四)------Java中也存在内存泄露。

    --Java中会存在内存泄露吗? --如果你想当然的以为Java里有了垃圾回收机制就不会存在内存泄露,那你就错了. Java里也会存在内存泄露! 我们慢慢来分析. 所谓内存泄露就是指一个不再被程序使用 ...

  10. java中三种常见内存溢出错误的处理方法

    更多 10   相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的 ...

随机推荐

  1. [python] 基于NetworkX实现网络图的绘制

    NETWORK CHART(网络图) 代码下载地址 网络图 (或图表或图形)显示了一组实体之间的互连.每个实体由一个或多个节点表示.节点之间的连接通过链接(或边)表示.网络的理论与实现是一个广阔的研究 ...

  2. [OpenCV实战]36 使用OpenCV在视频中实现简单背景估计

    目录 1 时间中值滤波 2 使用中值进行背景估计 3 帧差分 4 总结和代码 5 参考 许多计算机视觉应用中,硬件配置往往较低.在这种情况下,我们必须使用简单而有效的技术.在这篇文章中,我们将介绍一种 ...

  3. 学习.NET MAUI Blazor(四)、路由

    Web应用程序的可以通过URL将多个页面串联起来,并且可以互相跳转.Web应用主要是使用a标签或者是服务端redirect来跳转.而现在流行的单页应用程序 (SPA) ,则通过路由(Router)来实 ...

  4. 2022CSP-J线上游记

    写在前面 安徽CSP取消了-- 去年CSP考炸的我本来想今年一雪前耻(bushi),结果-- T1 第一题大毒瘤! 首先观察数据可以分类如下两种情况: \(a = 1\) 直接输出\(1\),retu ...

  5. ng-alain组件st表格,实现点击表格行变色,或者渲染变色

    实现点击表格行变色 html文件 <st #st [data]="data" (change)="changeClick($event)" [column ...

  6. Java 进阶P-4.2+P-4.3

    继承 什么是继承:通俗易懂就好像是你继承你了爸的财产,其中你是子类,你爸是父类继承在Java中被称为面向对象的三大的特征,其中他表示的是,从已有的类中派生出新的类,新的类拥有了父类中属性和方法(pri ...

  7. 读Java8函数式编程笔记06_Lambda表达式编写并发程序

    1. 阻塞式I/O 1.1. 一种通用且易于理解的方式,因为和程序用户的交互通常符合这样一种顺序执行的方式 1.2. 将系统扩展至支持大量用户时,需要和服务器建立大量TCP连接,因此扩展性不是很好 2 ...

  8. 【分析笔记】SiliconLabs EFR32BG22 Bluetooth Mesh SensorClient 源码分析

    硬件环境: SLTB010A(BRD4184A Rev A02 / EFR32BG22C224F512IM40) 软件环境: SimplicityStudio5/gecko_sdk_3.2.3 分析工 ...

  9. 记一次使用gdb诊断gc问题全过程

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 上次解决了GC长耗时问题后,系统果然平稳了许多,这是之前的文章<GC耗时高,原因竟是服务流量小?> 然 ...

  10. 文献阅读01:由I类HLA转录缺失导致的联合免疫治疗的获得性癌症耐药性

    背景 Merkel cell carcinoma:梅克尔细胞癌又名皮肤小梁状癌.原发性皮肤神经内分泌癌.皮肤原发性小细胞癌及皮肤APUD瘤. HLA:MHC基因产物在不同细胞表面表达,通常称之为MHC ...