为什么我的Java应用内存溢出时会被Docker Kill掉?

为什么我的Java应用内存溢出时会被Docker Kill掉?

Java系列 3年前 (2021-01-31) 浏览: 1364 评论: 0

像我们这样在Docker中运行Java应用程序的人,可能已经遇到过JVM在容器中运行时无法准确检测可用内存的问题。jvm没有准确地检测Docker容器中可用的内存,而是查看机器的可用内存。这可能导致在容器内运行的Java应用程序在尝试使用超出Docker容器限制的内存量时被终止的情况。 jvm对可用内存的错误检测与Linux工具/lib有关,这些工具/lib是在cgroups存在之前创建的,用于返

什么是OpenJDK? 我们为什么要使用它?

什么是OpenJDK? 我们为什么要使用它?

Java系列 2年前 (2022-06-01) 浏览: 5498 评论: 0

OpenJDK是Java的开发工具包,Java有着26年的历史。从任何标准来看,它都不是一种新的语言,尤其是在行业中,每隔几年就会出现新的解决方案,而且通常比以前的解决方案更好。而最流行的Java实例OpenJDK已经有14年的历史了。无论如何,OpenJDK应该已经被替换了很多次了。但它仍然是世界上最流行的开发工具之一!这怎么会发生? 在本文中,我们将尝试回答这个问题,深入研究OpenJDK的不

Kafka和Pulsar该如何选择?

Kafka和Pulsar该如何选择?

相关技术 3年前 (2021-05-18) 浏览: 1848 评论: 0

Apache Kafka为大规模分布式消息传递设置了标准,但是Apache Pulsar有自己的一些巧妙技巧 如今,大规模可伸缩的发布/订阅消息传递实际上是Apache Kafka的同义词。Apache Kafka仍然是分布式流媒体应用程序的坚定的、开源的首选,无论您是添加apache storm或apache spark之类的东西进行处理,还是使用Apache Kafka本身提供的处理工具。但K

提高正则表达式性能的几点建议

提高正则表达式性能的几点建议

Java系列 2年前 (2022-08-22) 浏览: 1593 评论: 0

当正则表达式通常与大型数据集相匹配时它们的编写必须高效。 为什么正则表达式效率很重要? 虽然写得好的正则表达式可能非常有效,但写得不好的正则表达可能需要很长时间才能运行,并且会显著降低系统的速度。编写一个需要数小时或数天才能完成的正则表达式是很有可能的,甚至可以编写一个在宇宙生命周期内无法完成的正则表达,因为它是针对中等大小的字符串运行的。 在实践中已经做了一些改进,使其比以前的版本更能抵抗低效的

SOA和微服务的各自特点是什么?

SOA和微服务的各自特点是什么?

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

什么是SOA? SOA是计算机软件设计中的一种体系结构模式。在这种类型的应用程序中,组件通过通信协议(通常通过网络)向其他组件提供服务。面向服务的原则独立于任何产品、供应商或技术。SOA的完整形式是面向服务的体系结构 SOA使各种网络上的软件组件更容易相互协作,按照SOA架构构建的Web服务往往使Web服务更加独立。 什么是微服务? 微服务是一种面向服务的体系结构模式,其中应用程序被构建为各种最小

Java递归与迭代的优缺点

Java递归与迭代的优缺点

Java系列 4年前 (2020-10-10) 浏览: 760 评论: 0

递归在某些算法中更难理解。一个可以自然地迭代表达的算法,如果递归地表达,可能就不那么容易理解了。 没有可移植的方法来判断深度递归可以在多大程度上不引起麻烦(机器有多少“堆栈空间”),也没有办法从太深的递归中恢复(“堆栈溢出”)。 你不能递归地做一些好事。例如,如果我要遍历一个二叉树,我可能想用For循环来完成: tree t; item *i; for (i = first (t); i != N

Spock注意事项:使用PowerMock对JDK系统类mock时不兼容问题

Spock注意事项:使用PowerMock对JDK系统类mock时不兼容问题

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

如果你在Spock中使用powermock去mock掉jdk类的静态方法,可能会出现powermock不兼容的问题(感谢"有1024个人"这位朋友的反馈,原文见之前这篇文章的评论:https://javakk.com/281.html)。 比如有下面这个要测试的类,里面调用了java.util.Calendar获取当前的年份,其他代码会调用这个方法,我们可能需要对返回的年份进行mock来测试不同的

Java在线诊断利器之Arthas

Java在线诊断利器之Arthas

Java系列 4年前 (2020-02-13) 浏览: 4852 评论: 0

一. 简介 Arthas是阿里在2019年9月份开源的一款java在线诊断工具,能够分析、诊断、定位java应用问题,例如:jvm信息、线程信息、搜索类中的方法、 跟踪代码执行、观测方法的入参和返回参数等等。 Arthas最大的特点是能在不修改代码和不需要重新发布的情况下,对业务问题进行诊断,包括查看方法调用的出参入参、异常、监测方法执行耗时、类加载信息等,大大提升线上问题排查效率。 二. 适用场

Java提示找不到或无法加载主类怎么解决?

Java提示找不到或无法加载主类怎么解决?

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

一旦您编写了一个Java程序,您需要使用javac命令来编译它,这将显示发生的编译时错误(如果有的话)。 一旦解析它们并成功编译程序,将在当前文件夹中生成一个与类名同名的可执行文件,扩展名为.class。 然后需要使用java命令执行它,如: java class_name 在执行时,当JVM找不到具有指定名称的.class文件时,会出现运行时错误,错误为"Could not found or l

在Java运行时定位内存泄露

在Java运行时定位内存泄露

jvm 3年前 (2021-01-03) 浏览: 854 评论: 0

虽然我们可以在堆转储中的dump文件找到大对象,但只有在OutOfMemoryError出现时,它们才会给出泄漏的指示。为了在事后分析期间有机会找到一些东西,应该始终使用JVM参数-XX:+HeapDumpOnOutOfMemoryError。 但并不是所有的泄漏都会导致OutOfMemoryError并产生转储dump文件,否则需要很长时间才能发生。例如,服务器和JVM甚至可以定期重启以进行部署

GraalVm和Polyglot

GraalVm和Polyglot

jvm 3年前 (2021-09-15) 浏览: 1326 评论: 0

大家好。在本博客中,我们将看到如何使用GraalVm实现多语言。这方面的先决条件是: 对GraalVm的理解。 了解GraalVm提供的功能。 GraalVm的本地设置。 一点java和python(可选)。 让我们开始吧。 什么是GraalVm? GraalVm是Oracle的一个开源项目,其目标是针对JVM,以便多个语言可以共存于同一个应用程序中。GraalVm不是JVM,而是一个UVM(通用

Java中的函数式编程

Java中的函数式编程

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

函数式编程是一种编程范式,其中程序是通过应用和组合函数来构造的。它是一种声明式编程范式,其中函数定义是表达式树,每个表达式树返回一个值,而不是一系列改变程序状态的命令语句 维基百科 Java8引入了Lambda形式的函数式编程。术语Lambda来自Lambda演算,用于描述计算。 Lambda 我们可以将lambda表达式视为一个匿名函数,可以将其分配给变量并传递给方法,该方法接受函数接口作为参数

JVM元空间metaspace溢出

JVM元空间metaspace溢出

jvm 4年前 (2020-11-12) 浏览: 1557 评论: 0

如何诊断Java8元空间泄漏? 执行堆转储并使用Eclipse MAT进行分析。看看你已经加载的类。检查是否有意外情况,尤其是metaspace以每小时20 Mb的速度稳定增长,直到我们碰到MaxMetaspace并遇到OOME。我尝试过并行和G1垃圾收集器(jdk1.8.0_40)。在执行过程中,应用程序没有被重新部署,因此看起来不像是典型的类加载器泄漏。 排除Java应用程序内存问题,OutO

Android内存泄露定位

Android内存泄露定位

jvm 3年前 (2020-12-14) 浏览: 1124 评论: 0

Android中的内存泄漏很容易造成。毫无防备的开发人员可能每天都在不知不觉中泄露一些内存。你可能还没有注意到它们,甚至还不知道它们的存在。直到你看到这样的例外… java.lang.OutOfMemoryError: Failed to allocate a 4308492 byte allocation with 467872 free bytes and 456KB until OOM at

JEP 425:虚拟线程(预览)

JEP 425:虚拟线程(预览)

Java系列 2年前 (2022-07-18) 浏览: 471 评论: 0

JEP 425:虚拟线程 Virtual threads(https://openjdk.org/jeps/425)以JDK 19作为预览API。虚拟线程是Project Loom的一部分,该项目自2017年以来一直在制作中。该项目旨在通过让开发人员使用熟悉的API编写和维护并发应用程序,并更高效地使用硬件资源,提高Java中的并发性能。 虚拟线程 动机 Java中的并发由线程处理。每个线程独立于

java堆外内存泄漏排查

java堆外内存泄漏排查

jvm 3年前 (2021-01-04) 浏览: 2296 评论: 0

当考虑Java中的内存泄漏时,我们通常会考虑Java堆泄漏,即在堆中分配的对象没有被垃圾收集。这是我在处理一台服务器内存泄漏时的想法,但我即将经历的远超出我的想象。 症状:运行Vertx应用程序(没有交换分区)的生产服务器被Linux内存不足kill掉(操作系统机制,当系统出现内存紧张的情况时释放内存)崩溃。 因为它是生产服务器,所以我认为可以让我们使用堆转储和MAT来检查发生了什么,并尝试找出谁

用于微服务通信的gRPC

用于微服务通信的gRPC

相关技术 3年前 (2021-10-18) 浏览: 624 评论: 0

在过去,软件应用程序是作为一个巨大的整体构建的,并且仍在进行中。然而,最近,微服务体系结构已经成为开发软件应用程序的流行选择。在微服务体系结构中,微服务通常需要相互通信。与传统的RESTfulWebAPI相比,基于gRPC的RPC框架可以更好地替代微服务通信。 什么是微服务体系结构? 微服务体系结构由许多(通常是数百个)小型、自治、自包含的服务组成。微服务是围绕业务能力构建的。微服务体系结构的一些

微服务与SOA的区别是什么?

微服务与SOA的区别是什么?

微服务 3年前 (2021-06-23) 浏览: 1404 评论: 0

在这一点上,微服务已经有好几年的上升趋势。这是有道理的,因为最著名的微服务成功案例属于游戏中最大的科技巨头——Netflix、亚马逊、Uber和eBay。 通过采用微服务,那些大型科技公司突然变得更加灵活。因此,通过提高部署速度和发布频率,它们可以更快地扩展。看到公共领域的潜在发展,开发人员开始将他们的单片应用程序解耦,并进行到云的迁移。 微服务的前身面向服务的体系结构(SOA)并不是很好。SOA

频率限制Rate limit在Akka Streams中的应用

频率限制Rate limit在Akka Streams中的应用

相关技术 3年前 (2021-10-29) 浏览: 428 评论: 0

最近,我有机会通过在FlowWithContext中添加未提供的节流操作符为Akka做出贡献,它可以在流中承载上下文而不必关心它,就像Kafka offset一样。这是学习Akka Streams的一些实现细节的一个很好的机会,下面是我学到的。 在我们开始之前,为什么我们需要throttle? 有很多情况下,我们可以使用throttle,我们使用throttle的主要原因是对访问外部资源(如API

实现Runnable还是扩展Thread类?

实现Runnable还是扩展Thread类?

Java系列 2年前 (2022-07-19) 浏览: 303 评论: 0

“我应该实现Runnable还是扩展Thread类?”这是一个很常见的问题。 在本文中,我们将看到哪种方法在实践中更有意义以及为什么。 使用Thread 我们首先定义一个扩展线程Thread的SimpleThread类: public class SimpleThread extends Thread { private String message; // standard logger, co

登录

忘记密码 ?

切换登录

注册