Java中的Sizeof

Java中的Sizeof

Java系列 6个月前 (11-06) 浏览: 136 评论: 0

Java有像C语言sizeof()的运算符吗? 一个肤浅的答案是Java不提供任何类似于C的sizeof()的东西。但是,让我们考虑一下为什么Java程序员偶尔会想要它。 C程序员自己管理大多数数据结构内存分配,而sizeof()对于知道要分配的内存块大小是必不可少的。此外,像malloc()这样的C内存分配器在对象初始化方面几乎什么都不做:程序员必须设置所有指向其他对象的对象字段。但是,当一切都

Java9 Variable Handles-变量句柄简介

Java9 Variable Handles-变量句柄简介

Java系列 6个月前 (11-13) 浏览: 97 评论: 0

Java 9为开发人员带来了许多新的有用功能。 其中之一是java.lang.invoke.VarHandle API—表示变量句柄—我们将在本文中对此进行探讨 什么是变量句柄? 通常,变量句柄只是对变量的类型化引用。变量可以是类的数组元素、实例或静态字段。 VarHandle类在特定条件下提供对变量的写和读访问。 VarHandles是不可变的,并且没有可见的状态。更重要的是,它们不能被细分。

HotSpot内联函数注解@IntrinsicCandidate简介

HotSpot内联函数注解@IntrinsicCandidate简介

Java系列 5个月前 (11-27) 浏览: 150 评论: 0

有时,编译器会对某些函数实现进行特殊处理。简单地说,它们将默认实现替换为另一个可能经过优化的实现。这样的函数在编译器理论中被称为内联/内在函数。 在本文中,我们将通过几个示例来了解内联函数在HotSpot JVM中是如何工作的: Java中的Math.log()方法计算任何给定数字的自然对数。以下是这个方法在OpenJDK中的实现: @IntrinsicCandidate public stati

探索Java中的ThreadLocalRandom

探索Java中的ThreadLocalRandom

Java系列 5个月前 (12-04) 浏览: 79 评论: 0

Java 7引入了ThreadLocalRandom,以提高高竞争环境中的随机数生成吞吐量。 ThreadLocalRandom背后的原理很简单:每个线程都维护自己版本的Random,而不是共享一个全局Random实例。这反过来又减少了争用,从而提高了吞吐量。 既然这是一个如此简单的想法,我们应该能够卷起袖子,以类似的性能实现ThreadLocalRandom之类的东西,对吧? 在我们的第一次尝试

Java中如何使用正则表达式替换字符串

Java中如何使用正则表达式替换字符串

Java系列 5个月前 (12-11) 浏览: 116 评论: 0

当我们需要在Java中查找或替换字符串中的值时,我们通常使用正则表达式。这使我们能够确定字符串的部分或全部是否与模式匹配。使用Matcher和string中的replaceAll方法,我们可以很容易地将相同的替换应用于字符串中的多个标记。 在本文中,我们将探讨如何为字符串中的每个token标记应用不同的替换。 我们还将研究一些调整正则表达式以正确识别标记的技巧。 在我们能够构建标记替换算法之前,我

使用JUnit5实现测试并行化

使用JUnit5实现测试并行化

Java系列 4个月前 (12-25) 浏览: 147 评论: 0

按顺序运行测试似乎是Java社区的现状,尽管现在我们的计算机有很多CPU内核。另一方面,并行执行所有这些项目在纸面上可能看起来很棒,但说起来往往容易做起来难,尤其是在已经存在的项目中。 在5.3版本中,JUnit框架引入了对并行测试执行的实验支持,这可以允许由代码驱动的选择性测试并行化。我想提出一个实用的解决方案,它应该适用于许多类型的项目,而不是对该功能进行详尽的概述(官方用户指南在这里做得很好

当你只限制最大堆大小时会发生什么?

当你只限制最大堆大小时会发生什么?

jvm 4个月前 (01-08) 浏览: 77 评论: 0

JVM的聪明把我们宠坏了。它在幕后做出了太多的决定,以至于我们很多人都放弃了去看里面的东西。与记忆相关的讨论可能更容易出现在会议或面试中,而不是“真正的”工作中。当然,这取决于你在做什么。 如今,Java应用程序通常在容器中运行。内置的容器感知使JVM尊重各种特定于容器的限制(例如CPU、内存)。这意味着,即使在使用伪java-jar app.jar运行应用程序时,一切都应该正常工作。这可能就是为

如何使用jmap命令从core dump提取堆转储?

如何使用jmap命令从core dump提取堆转储?

jvm 2个月前 (02-26) 浏览: 57 评论: 0

什么是core dump核心转储? 当程序异常终止时,应将程序在终止点的状态保存在某个位置以供进一步分析。此状态以核心转储文件的形式记录。 核心转储core dump文件包含异常终止发生的位置、进程堆栈、符号表等详细信息。 为什么需要core dump? 当生成堆转储jmap 块时,对于大堆,这可能需要很长时间。在这些情况下,获取核心然后运行 ​​jmap 从core dump提取堆转储通常要快得

开源流量回放平台 AREX 在携程的大规模落地实践

开源流量回放平台 AREX 在携程的大规模落地实践

Java系列 3周前 (04-08) 浏览: 29 评论: 0

转载:https://mp.weixin.qq.com/s/USM6mkVeEyOv6anwnyI0oQ AREX 是一款由携程开源的流量回放平台,孵化于机票 BU 内部,聚焦录制回放核心链路的建设,从基础方案建设到核心业务线的深入落地验证,在集团复杂业务场景下不断迭代和优化,积累了大量经验,取得了可见的成果,在携程落地至今已有 4000+ 应用接入,交付率和缺陷数均有所改善。 本篇文章主要介绍

登录

忘记密码 ?

切换登录

注册