深圳幻海软件技术有限公司 欢迎您!

  • 面试官: 你们生产环境的JVM怎么设置的?

    前言这篇文章,给大家聊一个生产环境的实践经验:线上系统部署的时候,JVM堆内存大小是越大越好吗?先说明白一个前提,本文主要讨论的是Kafka和Elasticsearch两种分布式系统的线上部署情况,不是普通的Java应用系统。1、是否依赖Java系统自身内存处理数据?先说明一点,不管是我们自己开发的

  • 一种使用字节码增强技术检测线程阻塞的实现方式

    背景介绍在过去处理过的服务故障中,有一类比较典型的场景是业务线程被阻塞(造成阻塞的原因也是多种多样),慢慢导致业务线程池中的全部线程被阻塞,最终造成无法对外提供服务(现象则是CPU、Load、内存等指标都比较低,请求接口后响应超时或者没有响应)。问题分析响应时间是接口监控的黄金指标之一:假设接口接收

  • 记一次JVM Full GC 引发的线上故障,真是坑!

    ​一、业务场景介绍先简单说说线上生产系统的一个背景,因为仅仅是文章作为案例来讲,所以弱化大量的业务背景。简单来说,这是一套分布式系统,系统A需要将一个非常核心以及关键的数据通过网络请求,传输给另外一个系统B。所以这里其实就考虑到了一个问题,如果系统A刚刚将核心数据传递给了系统B,结果系统B莫名其妙宕

  • 讲透JVM类加载机制,向高手进阶

    1、前言先来看一下JVM整体的一个运行原理。我们首先从“.java”代码文件,编译成“.class”字节码文件,然后类加载器把“.class”字节码文件中的类给加载到JVM中,接着是JVM来执行我们写好的那些类中的代码,整体是这么个顺序。我们看看下图,感受一下这个过程:那么今天,我们就来仔细看看上图

  • Java要抛弃祖宗的基业,Java程序员危险了!

    ​第11代Java国王坐在宝座上,俯视着臣民。经过历代国王的励精图治,他的Java帝国正处于巅峰状态。一群大臣看到新王登基,马上上来拍马屁。“从后端到手机端,从手机端到大数据,帝国疆域无边无际。”线程大臣率先定了基调。“Java是企业级应用无可撼动的霸主,生态环境极大丰富。Spring已经统治了后端

  • 线上一次JVM FullGC搞得整晚都没睡,彻底崩溃

    这篇文章给大家聊一次线上生产系统事故的解决经历,其背后代表的是线上生产系统的JVMFullGC可能引发的严重故障。一、业务场景介绍先简单说说线上生产系统的一个背景,因为仅仅是文章作为案例来讲,所以弱化大量的业务背景。简单来说,这是一套分布式系统,系统A需要将一个非常核心以及关键的数据通过网络请求,传

  • Java 服务 Docker 容器化优秀实践

    一、概述当我们在容器中运行Java应用程序时,可能希望对其进行调整参数以充分利用资源。在本教程中,我们将了解如何在运行Java进程的容器中设置JVM参数。本文将重点关注常见的 -Xmx和-Xms标志。另外,我们还将研究使用某些Java版本运行的程序容器化的常见问题,以及如何在常见的容器化J

  • 聊一聊关于JDK、JRE 和 JVM 的区别

    JavaDevelopmentKit(JDK)是用于开发Java应用程序和小程序的软件开发环境。它包括Java运行时环境(JRE)、解释器/加载器(Java)、编译器(javac)、归档器(jar)、文档生成器(Javadoc)以及Java开发所需的其他工具。现在我们需要一个环境来运行我们的程序。此

  • 美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃

    大家好,我是坤哥网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致JVM崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨线程崩溃,进程一定会崩溃吗?进程是如何崩溃的-信号机制简介。为什么在JVM中线程崩溃不会导致JVM进程崩溃

  • 一篇了解JVM堆(Heap),你学会了吗?

    1.JVM堆的概念JVM中的堆是用来存放对象的内存空间,几乎所有的Java对象、数组都存储在JVM的堆内存中。比如当我们new一个对象或者创建一个数组的时候,就会在堆内存中分配出一段空间用来存放。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,便于后续的执行。

  • 一次性聊透JVM架构设计,就算八股文也得会

    有位小伙伴在我的粉丝群里面问我一个面试题,说面试被问对JVM的理解,不知道怎么回答,今天咱们来聊透,就算是八股文你也得会。另外,往期面试题解析中配套的文档我已经准备好,想获得的可以在文章底部加我\/领取!先来看什么是JVM?1.什么是JVMJVM(JavaVirtualMachine)其实是一套标准

  • 面向Java开发人员的JVM参数指南

    通过理解和使用JVM和JVM参数,开发人员和最终用户都可以诊断故障并改进Java应用程序的性能。当你编写源代码时,你是在编写供人类阅读的代码。在代码被编译成机器语言之前,计算机不能执行源代码。机器语言是一个通用术语,指的是特定机器所需的任意数量的语言。通常,如果在Linux上编译代码,它就在Linu

  • 聊聊如何优雅的关闭服务?

    大家好,我是指北君。通常,启动一个服务是很容易的。然而,有时我们需要有一个计划来优雅地关闭一个服务。在本教程中,我们将看一下JVM应用程序终止的不同方式。然后,我们将使用JavaAPIs来管理JVM关闭钩子。关闭JVMJVM可以通过两种不同的方式被关闭。一种受控的方式一种非受控的方式一个受控的进程在

  • JDK、JRE 和 JVM 有什么用,它们是怎样运行的

    JDK如何运作?JDK功能以下是JDK的重要组件:JDK和JRE:程序员通过使用JDK创建由JRE运行的Java程序,其中包括JVM和类库。类库:是一组可动态加载的库,Java程序在运行时调用。编译器:是一个Java程序,开发人员的文本文件通过编译器编译成Java类文件。编译器给出的常见输出形式,包

  • Java 正青春:现状与技术趋势报告

    在《Java开发手册》泰山版发布之际,我们来总结思考一下Java的最新技术动向和未来。本文将从JavaSE开源现状、OpenJDK版本生态到OpenJDK技术趋势三个方面讲述当前基础Java技术的现状,进一步讨论在云原生、AI、多语言生态领域支撑Java应用的基石——JavaVirtualMachi

  • Spring Boot项目优化和JVM调优

     https://www.cnblogs.com/jpfss/p/9753215.html项目调优作为一名工程师,项目调优这事,是必须得熟练掌握的事情。在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行。1.修改配置文件关于修改配置文件application.p

  • 进击的 Java ,云原生时代的蜕变

    【编者的话】云原生时代的来临,与Java开发者到底有什么联系?有人说,云原生压根不是为了Java存在的。然而,本文的作者却认为云原生时代,Java依然可以胜任“巨人”的角色。作者希望通过一系列实验,开拓同学视野,提供有益思考。在企业软件领域,Java依然是绝对王者,但它让开发者既爱又恨。一方面因为其

  • 9大免费Java流程监控工具

    什么是JavaProfilers?JavaProfiler是一种监视JVM级别的Java字节码构造和操作的工具。Profilers跟踪所有方法调用和内存使用情况,允许你以选择的任何角度深入调用呼叫结构。你的标准分析器将提供大量信息,其有用性主要取决于手头的调试任务。它应详细说明JVM的所有内存使用情

  • 翻车现场:一次JVM FullGC引发的宕机事故

    这篇文章给大家聊一次线上生产系统事故的解决经历,其背后代表的是线上生产系统的JVMFullGC可能引发的严重故障。业务场景介绍先简单说说线上生产系统的一个背景,因为仅仅是文章作为案例来讲,所以弱化大量的业务背景。简单来说,这是一套分布式系统,系统A需要将一个非常核心以及关键的数据通过网络请求,传输给

  • Java如何有效地避免OOM:善于利用软引用和弱引用

    想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。下面是本文的目录大纲:一.了解强引用、软引用、弱引用、虚引用的概念二.进一步理解软引用和弱引用三.如何利用软引用和弱引

推荐阅读