如何防止内存泄露

如何防止内存泄露

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

在本文中,我们将全面概述Java世界中的内存泄漏,以及防止它们的主要方法。 与许多人的想法相反,用Java编写的应用程序确实会出现内存泄漏问题。不幸的是,大量java程序员认为内存泄漏是C++的一部分,java垃圾收集器完全解决了这个问题。在本文中,我打算说明虽然垃圾收集器工作得很好,但它不能发挥神奇的作用。 内存泄漏的意思正是它的名字所说的:内存泄漏。它可以有两种类型: 内存块:已分配并可供应用

JDK、JRE、JIT、SDK、JVM的区别

JDK、JRE、JIT、SDK、JVM的区别

jvm 3年前 (2021-01-12) 浏览: 567 评论: 0

JDK(Java Development Kit 开发工具包) JDK(java development kit)是JRE(Java运行时环境)的超集,它包含JRE所拥有的一切以及编译器、调试器等开发工具。 JRE(Java运行时环境) JRE(Java运行时环境)提供JVM(Java虚拟机)运行的环境。JRE包含JVM、类库和其他文件,不包括编译器和调试器等开发工具。 这意味着,您可以在JRE中

Java10特性和增强功能

Java10特性和增强功能

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

在Java9发布之后,Java10很快就出现了。与以前的版本不同,Java10没有那么多令人兴奋的特性,但是它几乎没有什么重要的更新,这些更新将改变您的编码方式,以及其他未来的Java版本。 JEP 286:局部变量类型推断 Java现在有var样式的声明。它允许您声明局部变量而不指定其类型。变量的类型将从创建的实际对象的类型推断出来。它声称是JDK10中开发人员的唯一真正特性。例如: var s

ActiveMQ与RabbitMQ的区别

ActiveMQ与RabbitMQ的区别

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

ActiveMQ与RabbitMQ的区别 ActiveMQ与RabbitMQ是流行的开源消息代理。消息代理通过将定义的消息共享给各种应用程序来帮助计算机彼此交互,从而支持电信系统。消息代理帮助将发送方消息的格式转换为接收方标准的格式。RabbitMQ是AMQP协议的最佳实现。它执行一个代理体系结构,其中消息在发送到目的地之前在中心节点上排队。ActiveMQ工作在中间地带,使用代理和P2P架构进行

SpringBoot集成Caffeine缓存

SpringBoot集成Caffeine缓存

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

在SpringBoot的这篇文章中,我们将研究如何将SpringBoot与缓存集成。我们将检查springboot自动配置特性,它能够透明地挂接缓存。 Caffeine缓存 Caffeine是一个基于java8的高性能缓存库,提供接近最佳的命中率。它提供了一个非常类似于google guavaapi的内存缓存。如果caffinecachemanager在类路径中找到Caffeine,Spring引

RxJava和java9 FlowAPI的区别

RxJava和java9 FlowAPI的区别

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

  JavaFlowAPI是在Java9中作为反应流规范Reactive Stream的实现而引入的。 在本文中,我们将首先研究反应流Reactive Stream。然后,我们将了解它与RxJava和flowapi的关系。 什么是Reactive Stream? Reactive Manifesto引入了Reactive Streams,以指定具有非阻塞背压的异步流处理的标准。 反应流规

使用Spring Boot和Spring Cloud搭建微服务

使用Spring Boot和Spring Cloud搭建微服务

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

在Java生态系统中,您将发现一些用于构建微服务体系结构的根深蒂固的模式。如果您以前使用过Spring,那么springboot和springcloud应该是一个不错的返校节。 在本教程中,我将向您展示如何使用springboot和springcloud构建javamicroservices体系结构。 使用Spring Cloud 和 Spring Boot创建Java微服务 仓库地址: git

使用Spring和Eureka创建微服务

使用Spring和Eureka创建微服务

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

在这篇文章中我们将学习如何创建分布式微服务,并使用springboot、Feign和Eureka服务器使这些微服务协同工作。我们将讨论如何使用springboot创建分布式微服务。为此,我们将使用包Spring Cloud NetFlix(https://spring.io/projects/spring-cloud-netflix)。 任何微服务都应该能够定位另一个服务的不同实例,而不必在代码中

基于Spring Boot和Spring Cloud实现Java微服务

基于Spring Boot和Spring Cloud实现Java微服务

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

在开发微服务体系架构时,Java是一种很好的语言。事实上,我们行业中的一些大牌公司都在使用它。你听说过Netflix、亚马逊或谷歌吗?eBay、Twitter和LinkedIn呢?是的,处理令人难以置信的流量的大公司都在用Java来实现这一点。 在Java中实现微服务体系结构并不适合所有人。因此,通常不需要实现微服务。大多数公司这样做是为了扩大员工规模,而不是系统规模。如果你想扩大你的员工规模,雇

在Java程序中使用lambda表达式和函数编程

在Java程序中使用lambda表达式和函数编程

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

在JavaSE8之前,匿名类通常用于将功能传递给方法。这种做法混淆了源代码,使其更难理解。Java8通过引入lambdas消除了这个问题。本教程首先介绍lambda语言功能,然后详细介绍使用lambda表达式和目标类型进行函数式编程。您还将了解lambda如何与作用域、局部变量、this和super关键字以及Java异常交互。 请注意,本文中的代码示例与JDK 12兼容。 Lambdas: A p

用Java代码创建第一个区块链程序

用Java代码创建第一个区块链程序

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

我们都看到了比特币和其他加密货币的规模。虽然这种在线货币的波动性是出了名的,但其背后的技术有可能从内到外扰乱每一个行业。因为区块链有着无限的应用范围,它每天都以新的方式出现。 在这篇文章中,我们将探讨区块链背后的体系结构以及分布式账本的工作原理。一旦你亲眼看到,你就会明白为什么那么多开发者将区块链视为一种新常态。我们还将深入学习如何创建自己的(基本)区块链序列和使用工作证明(挖掘)系统的简短教程。

JIT优化之循环展开

JIT优化之循环展开

jvm 2年前 (2022-03-02) 浏览: 737 评论: 0

在本文中,我们将讨论一种自动优化,称为循环展开。JIT编译器使用这种技术使循环(例如Java的for或while循环)执行得更快。 因为我们将在这里深入研究JVM,为了便于演示,您有时会遇到C代码,甚至是一些汇编语言,所以请不要着急! 让我们首先考虑以下一段C代码,它为100万个long分配空间,并用100万个long随机数填充空间: int main(int argv, char** argc)

Java中的StackOverflowError错误

Java中的StackOverflowError错误

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

StackOverflowError可能会让Java开发人员感到恼火,因为它是我们可能遇到的最常见的运行时错误之一。 在本文中,我们将通过查看各种代码示例以及如何处理它来了解此错误是如何发生的。 Stack Frames和StackOverflowerError的发生方式 让我们从基础开始。调用方法时,将在调用堆栈上创建新的堆栈帧(stack frame)。该堆栈框架包含被调用方法的参数、其局部变

AREX Agent 技术实现细节分享

AREX Agent 技术实现细节分享

Java系列 9个月前 (08-07) 浏览: 196 评论: 0

原文地址:https://mp.weixin.qq.com/s/ObonOKMFftDCnFMs28ao7A 背景 在携程内部,随着公司业务规模和复杂度不断提高,研发测试团队面临着各种效能困境,尤其是在需要构造大量测试数据、写场景验证、发布频繁的场景下,业务的质量保障更是是重中之重。 为了满足公司持续交付的需求、并有效保障质量,我们基于流量录制回放的概念,在合法合规以及安全的前提下,开发了一款“用

Java开发利器之重试器

Java开发利器之重试器

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

在平时开发中经常会遇到需要调用接口和外部服务的场景,但是有些接口服务方不能立即返回数据,而是需要处理一段时间才能返回真实的业务数据,如果没有处理完则直接返回一个中间状态的结果。 业务场景: 代码中存在依赖不稳定的场景,需要使用重试获取预期结果或者尝试重新执行逻辑不立即结束,比如远程接口访问,数据加载访问,数据上传校验等 对于异常需要重试的场景,同时希望把正常逻辑和重试逻辑解耦 对方接口不支持异步回

关于G1垃圾收集器、永久代permgen和元空间metaspace

关于G1垃圾收集器、永久代permgen和元空间metaspace

爪哇岛 4年前 (2020-09-18) 浏览: 1919 评论: 0

我们收到了一些关于G1垃圾收集器的问题,以及永久一代的使用。似乎有些混乱 当G1用作垃圾时,热点JVM不使用永久生成 JDK 7:PermGen永久代 JDK 7及其更新版中仍然存在永久代,所有的垃圾回收器都在使用。在JDK7中,删除永久生成已启动,并且部分数据驻留在永久生成被移到Java堆或本机堆。 永久生成并没有完全删除,它仍然存在于jdk7中以及它的更新。这是从永久性建筑中移走的东西的清单

Java反射机制讲解及代码示例

Java反射机制讲解及代码示例

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

反射是一个API,用于在运行时检查或修改方法、类、接口的行为。 下面提供了反射所需的类java.lang.reflect包裹。 反射为我们提供了一个对象所属的类的信息,以及可以使用该对象执行的类的方法的信息。 通过反射,我们可以在运行时调用方法,而不管它们使用的访问说明符是什么。 反射可用于获取有关: 类Class getClass()方法用于获取对象所属类的名称。 构造函数Constructor

metaspace会gc吗

metaspace会gc吗

jvm 3年前 (2020-11-21) 浏览: 1188 评论: 0

我们将在GC日志中打印元空间的大小。假设我们设置了 -XX:MetaspaceSize=100M -XX:MaxMetaspaceSize=100M 这意味着一旦metaspace的使用量达到100M就应该触发一个metaspace fulGC,但实际上我们从GC日志中发现了这个问题,metaspace只使用了70899KB。 [Full GC (Metadata GC Threshold) [P

什么是内存泄露?

什么是内存泄露?

jvm 3年前 (2020-12-23) 浏览: 362 评论: 0

内存泄漏是用户不感兴趣的任何内存使用 定义1:用户角度内存泄漏 这个定义可能有点过于宽泛,特别是,它将包括从未使用过的缓存,内存泄漏是困扰开发人员和用户数代人的一大问题。不过,术语本身并不像看上去那么明显,所以我们将从一开始就开始:应该如何定义内存泄漏? 在开发人员(和计算机科学)界,与以下定义2类似的定义(也称为“语法内存泄漏”)非常流行: 内存泄漏是指任何无法访问的内存。 定义2:语法内存泄漏

关于Java内存泄漏,你需要知道的十件事

关于Java内存泄漏,你需要知道的十件事

jvm 3年前 (2021-01-22) 浏览: 523 评论: 0

Java内存泄漏可能是致命的,而且很难排除故障。您是否属于定期(每周、每天或更频繁)重新启动应用程序服务器的商店之一?真可怜,不是吗?等等,我们在服务器上拥有128MB内存的日子一去不复返了。我们在服务器上有好几十亿字节的内存,不是吗?为什么我们还遇到内存问题?问得好。但可悲的是,有几个原因可以解释为什么内存泄漏不会消失。你所能做的就是做好准备。这就是本文的主题。让我们深入了解有关Java内存泄漏

登录

忘记密码 ?

切换登录

注册