springboot内存泄露问题排查

springboot内存泄露问题排查

jvm 3年前 (2020-12-09) 浏览: 3034 评论: 0

John Miiler 是ebay团队的高级后端工程师,负责各种项目,包括结账和支付系统。作为公司摆脱单一业务的努力的一部分,他的团队正试图将业务逻辑一块一块地提取到单独的微服务中。他分享了他的团队如何解决在提取图像处理微服务时遇到的内存使用问题。 最近提取的microservice是一种图像处理服务,它对图像进行大小调整、裁剪、重新编码和执行其他处理操作。这个服务是一个在Docker容器中使用s

Java中如何比较两个对象相等?

Java中如何比较两个对象相等?

Java系列 3年前 (2021-10-23) 浏览: 2928 评论: 0

比较对象是面向对象编程语言的一个基本特征。 在本文中,我们将了解Java语言的一些特性,这些特性允许我们比较对象。此外,我们还将研究外部库中的这些特性。 ==  还有!= 运算符 让我们从==和!=开始运算符,可以分别判断两个Java对象是否相同。 原语 对于基本类型,相同意味着具有相等的值: assertThat(1 == 1).isTrue(); 由于自动取消装箱,在将原语值与其包装类型对应项

Java并行流Parallel Streams介绍

Java并行流Parallel Streams介绍

Java系列 3年前 (2021-03-13) 浏览: 2821 评论: 0

Java并行流Parallel Streams是Java8和更高版本的一个特性,用于利用处理器的多个核心。通常,任何java代码都有一个处理流,在这里它是按顺序执行的。然而,通过使用并行流,我们可以将代码分成多个流,这些流在不同的内核上并行执行,最终的结果是各个结果的组合。然而,处理的顺序不在我们的控制之下。 因此,建议在以下情况下使用并行流:无论执行顺序如何,结果不受影响,一个元素的状态不影响另

GraalVM原生镜像性能测试:Spring VS Quarkus

GraalVM原生镜像性能测试:Spring VS Quarkus

相关技术 3年前 (2021-04-28) 浏览: 2805 评论: 0

GraalVM是一个通用的虚拟机,用于运行应用程序,如JavaScript、Python、Ruby、R、JVM等语言,如java、Scala、Groovy、Kotlin、Crojule和基于LLVM的语言,如C++和C++。 对我来说,最有趣的特性之一是编译为基于JVM的应用程序的本机二进制(在GraalVM中通常称为本机映像)。本机映像意味着编译将是独立的,不需要JVM(如C、C++或Golan

Java反射替代方案

Java反射替代方案

Java系列 3年前 (2020-11-04) 浏览: 2780 评论: 0

替换反射API调用可以提高性能 有时,作为开发人员,您可能会遇到这样的情况:无法使用new运算符实例化对象,因为它的类名存储在配置XML中的某个位置,或者您需要调用名称指定为注释属性的方法。在这种情况下,您总是有一个答案:使用反射! 您可以通过存储java.lang.reflect.Method实例,并像在许多框架中实现一样调用它们,但我们决定看看其他选项。反射调用有其成本,如果您开发一个生产类框

如何在macOS上配置jdk环境变量

如何在macOS上配置jdk环境变量

Java系列 3年前 (2021-02-20) 浏览: 2771 评论: 0

本文展示了如何在较旧的Mac OS X和最新的macOS11上设置$JAVA_HOME环境变量。 解决方案 在macOS上设置$JAVA_HOME环境变量的步骤。 1. 找出你的macOS版本。 2. 找出你用的是哪个shell,bash还是zsh? 3. 对于zsh shell,在~/.zshenv或~/.zshrc导出$JAVA_HOME。 4. 对于bashshell,将$JAVA_HOME

Apache Ignite原理介绍

Apache Ignite原理介绍

相关技术 3年前 (2021-08-01) 浏览: 2725 评论: 0

Apache Ignite是一个开源的分布式数据库、缓存和处理平台,它以内存速度处理数PB的数据。 它提供容错、集群范围内的发布/订阅消息传递、在出现故障时动态重新平衡集群、内存文件系统、数据网格、数据库、流分析。它可以用来解决可伸缩性和性能问题。 在Cazton,我们通过Apache Ignite最佳实践、开发、性能调整、咨询、招聘服务和实践培训服务,帮助财富500强的大中型公司。 内存计算平台

java.lang.OutOfMemoryError: unable to create new native thread

java.lang.OutOfMemoryError: unable to create new native thread

jvm 3年前 (2021-01-14) 浏览: 2666 评论: 0

1. 介绍 在本教程中,我们将讨论java.lang.OutOfMemoryError: unable to create new native thread error无法创建新的本机线程错误。 2. 了解问题 2.1. 问题的原因 大多数Java应用程序本质上是多线程的,由多个组件组成,执行特定的任务,并在不同的线程中执行。但是,底层操作系统(OS)对Java应用程序可以创建的最大线程数设置了

Spock代码讲解- if esle 多分支场景测试

Spock代码讲解- if esle 多分支场景测试

Spock系列 4年前 (2020-08-09) 浏览: 2667 评论: 2

这是Spock系列的第四篇文章,在第二篇讲单元测试开发成本和效率问题时,提到了如何测试复杂的if else场景,分别使用Junit和Spock的实现,以及Spock的优势在哪里,这一篇会详细讲解Spock代码的语法 一. expect + where 如果业务比较复杂,对应的代码实现会有不同的分支逻辑,类似下面的伪代码: if () { if () { // 代码逻辑 } else { // 代码

Spring Boot集成Caffeine缓存

Spring Boot集成Caffeine缓存

相关技术 3年前 (2021-07-03) 浏览: 2617 评论: 0

Spring Boot集成咖啡因Caffeine缓存 Caffeine咖啡因是使用Java8重写的Guava缓存版本,将在SpringBoot2.0中取代Guava。如果咖啡因发生,咖啡因缓存管理器Caffeine Cache Manager将自动配置。使用spring.cache.cache-names属性,可以在启动时创建缓存,并通过如下配置(按顺序)对其进行自定义: spring.cache

使用Byte Buddy开发Java agent功能

使用Byte Buddy开发Java agent功能

Java系列 3年前 (2021-09-21) 浏览: 2607 评论: 0

虽然Java初学者很快就学会了键入public static void main来运行他们的应用程序,但即使是经验丰富的开发人员也常常不知道JVM对Java进程的另外两个入口点的支持:premain和agentmain方法。这两种方法都允许所谓的Java代理在驻留在自己的jar文件中时对现有Java程序作出贡献,即使主应用程序没有显式链接。这样,就可以完全独立于承载Java代理的应用程序开发、发布

日志框架Log4j与Logback的区别

日志框架Log4j与Logback的区别

Java系列 2年前 (2021-12-16) 浏览: 2584 评论: 0

Log4j与Logback之间的差异 Log4j被定义为基于java的应用程序,带有日志功能,它是用于将消息记录到不同输出的java框架,有助于定位问题。Logback被定义为log4j的继承者,log4j也是用于在任何基于java的应用程序中记录消息的java框架。一般来说,log4j和logback是java的日志框架,用于在运行时修改配置,也可以在不同的目的地进行输出。log4j有不同的版本

Spock代码讲解-异常测试

Spock代码讲解-异常测试

Spock系列 4年前 (2020-08-11) 浏览: 2585 评论: 0

这是Spock系列的第五篇文章,这一篇主要讲使用Spock如何测试代码中抛异常的场景 背景 有些方法需要抛出异常来中断或控制流程,比如参数校验的逻辑: 不能为null,不符合指定的类型,list不能为空等验证,如果校验不通过则抛出checked异常,这个异常一般都是我们封装的业务异常信息,比如下面的业务代码: /** * 校验请求参数user是否合法 * @param user * @throws

Spock如何使用JMockit来mock静态方法

Spock如何使用JMockit来mock静态方法

Spock系列 3年前 (2021-06-27) 浏览: 2579 评论: 0

之前的Spock系列mock静态方法主要是通过使用PowerMock实现的,但是使用JMock的同学也挺多的,所以这篇文章讲下在Spock中如何使用JMockit来mock静态方法。 比如下面的业务代码demo,记录日志的logger对象是调用LoggerServiceFactory工厂类的静态方法获取的,这时候就可以使用JMockit把他的静态方法getLoggerService给mock掉,因

使用Spring Native将SpringBoot程序转换为GraalVM

使用Spring Native将SpringBoot程序转换为GraalVM

相关技术 3年前 (2021-04-26) 浏览: 2566 评论: 0

Spring发布了一个新工具Spring Native Beta,用于将现有的Spring Boot应用程序(用Java或Kotlin编写)转换为GraalVM本机映像。目标是在springnative上支持Spring Boot应用程序。GraalVM本机映像很小,经过优化,启动速度很快。然而,与JVM相比,折衷的办法是构建时间更长,运行时优化更少。 Spring Native与GraalVM团

构建微服务架构的5种常用技术

构建微服务架构的5种常用技术

微服务 3年前 (2021-05-07) 浏览: 2550 评论: 0

为了有效地实现你的目标,你必须把它们分解成小任务,然后把大部分时间花在你面前的任务上,而不是被大目标的艰巨所压倒。-- Sunday Adelaja 这可能不是微服务的工作原理,但它肯定是我们在微服务架构上开发应用程序时遵循的原则。 微服务在市场上越来越受欢迎,因为企业正致力于构建复杂的、更大的应用程序,这些应用程序可以作为较小服务的集合进行分离和处理。越来越多的人希望将他们传统的单机系统重新设计

Java并行流parallelStream的处理速度竟然stream慢!

Java并行流parallelStream的处理速度竟然stream慢!

Java系列 3年前 (2021-05-14) 浏览: 2492 评论: 0

奇怪的是,为什么使用“parallelStream()”的代码有时比使用“stream()”的代码慢。 实际上,使用parallelStream()有几个问题。 最重要的是,parallelStream()总是需要执行比按顺序执行更多的实际工作[即stream()]。 在多个线程之间分割工作并合并或组合结果会带来很大的开销。像将短字符串转换为小写字符串这样的用例非常小,与并行拆分开销相比,它们可以

如何正确设置jdk环境变量JAVA_HOME?

如何正确设置jdk环境变量JAVA_HOME?

Java系列 3年前 (2021-02-10) 浏览: 2489 评论: 0

在演示如何在所有操作系统上设置JAVA_HOME之前,让我们先解释一下什么是环境变量?JAVA_HOME环境变量的用途是什么? 作为先决条件,您需要在您的计算机上安装JDK或JRE。有关详细信息,请参阅如何安装JDK一文 您可能知道,几乎所有的java代码都有一个变量来存储一个值,这个值在程序中被多次使用。环境变量类似于final变量(在java中),但它是针对您的环境的。因此,JAVA_HOME

JConsole定位内存泄漏

JConsole定位内存泄漏

jvm 3年前 (2021-01-09) 浏览: 2481 评论: 0

在本文中,我们将看到Java中内存泄漏的示例代码。之后,我们将把Java应用程序连接到JConsole,比较有无内存泄漏时应用程序的内存使用情况。深入研究JConsole的内存监控工具可以让我们看到堆内存是如何划分为不同的空间的,垃圾收集器是如何有效地管理Java应用程序的内存的。 Java中的垃圾回收 在Java中,垃圾收集器(GC)负责释放未使用对象使用的内存。任何没有引用的对象都可以进行垃圾

intellij idea与Eclipse的区别

intellij idea与Eclipse的区别

相关技术 3年前 (2021-03-11) 浏览: 2445 评论: 0

IntelliJ Idea intellij idea是面向Java开发人员的功能最强大、最流行、功能最全的IDEA,于2001年向公众发布。它由Jet Brains公司开发和维护。它由apache2.0授权。 IntelliJ Idea有两个版本: Community 社区版:免费提供,主要用于Java和Android开发者。它支持大多数语言,如Java、Kotlin、Groovy、Clojur

登录

忘记密码 ?

切换登录

注册