线程池ForkJoinPool简介

线程池ForkJoinPool简介

Java系列 4年前 (2020-03-01) 浏览: 2471 评论: 0

ForkJoinPool线程池最大的特点就是分叉(fork)合并(join),将一个大任务拆分成多个小任务,并行执行,再结合工作窃取模式(worksteal)提高整体的执行效率,充分利用CPU资源。 一. 应用场景 ForkJoinPool使用分治算法,用相对少的线程处理大量的任务,将一个大任务一拆为二,以此类推,每个子任务再拆分一半,直到达到最细颗粒度为止,即设置的阈值停止拆分,然后从最底层的任

元空间的垃圾回收

元空间的垃圾回收

jvm 3年前 (2020-11-19) 浏览: 2415 评论: 0

Java内部结构 我们的许多微服务都运行在Java虚拟机(JVM)上,在本文的其余部分中,有必要充分理解这一主题。如果您已经熟悉编译、内存管理和垃圾收集的概念,可以跳过这些部分。 与其他语言相比,Java的优势之一是它的跨平台可移植性。这意味着在安装了Java运行时环境(JRE)的任何地方都可以执行相同的字节码。然而,它需要相当多的幕后工作来实现。一个重要的组件允许Java以它的方式运行,它是定义

Java Stream之Parallel Streams编程指南

Java Stream之Parallel Streams编程指南

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

并行与并发程序设计 到目前为止,我们在CS2030中编写的程序是按顺序运行的。这意味着在任何时候,处理器上运行的程序只有一条指令。 什么是并发性? 一个单核处理器一次只能执行一条指令——这意味着一次只能运行一个进程(或者更确切地说,一个应用程序)。然而,当我们使用电脑时,感觉就像我们在同时运行多个进程。幕后的操作系统实际上是在不同进程之间切换,给用户一种同时运行的错觉。 我们可以编写一个程序,使其

如何在Windows和Linux上为Java设置classpath

如何在Windows和Linux上为Java设置classpath

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

  Java中的classpath是什么? Java中的classpath类路径是指向目录的路径或目录列表,类加载器用它在Java程序中查找和加载类。可以使用不区分大小写的Classpath环境变量、-cp或-Classpath命令行选项或中的Classpath属性来指定Classpath在JAR文件中的manifest.mf文件。在这篇Java文章中,我们将学习什么是Java中的cla

java找不到或无法加载主类

java找不到或无法加载主类

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

刚开始做Java开发的人遇到的一个常见问题是,他们的程序无法运行并显示错误消息:找不到或加载主类 Could not find or load main class。。。 这意味着什么,是什么原因造成的,我们应该如何修复它呢? java <class name>命令语法 首先,您需要了解使用java(或javaw)命令启动程序的正确方法。 正常的语法是这样的: java [ <o

java堆外内存泄漏排查

java堆外内存泄漏排查

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

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

SpringBoot集成Caffeine缓存

SpringBoot集成Caffeine缓存

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

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

使用maven插件简化Spring Boot GraalVM原生镜像构建

使用maven插件简化Spring Boot GraalVM原生镜像构建

Serverless 3年前 (2021-06-03) 浏览: 2223 评论: 0

本文基于上一篇:在Docker&Heroku上运行Spring Boot GraalVM本机映像 新的spring-graalvm-native原生版本0.7.1和graalvm 20.1.0都进行了大量的优化!本机映像命令的配置变得容易得多。那么让我们来看一下Spring Boot GraalVM本机映像编译的native-image-maven-plugin。 新的Spring特性0.

dump文件定位内存泄露

dump文件定位内存泄露

jvm 3年前 (2021-01-05) 浏览: 2164 评论: 0

本文旨在详细说明如何查看堆中的对象。包括对象之间的引用以识别潜在的Java内存泄漏。 用于分析内存问题的最简单工具是所谓的Java Heapdumps,即堆转储dump文件,它可以在出现错误时自动生成,例如,通过JVM选项-XX:+HeapDumpOnOutOfMemoryError。在这种情况下,转储是在JVM结束之前创建的,这也称为事后分析。当然,这些转储也可以在运行时手动生成,但以后会更多。

Classloader类加载器引起元空间Metaspace的内存泄露

Classloader类加载器引起元空间Metaspace的内存泄露

jvm 3年前 (2021-01-21) 浏览: 2149 评论: 0

如果您只是想在不了解理论的情况下快速解决问题,请跳到第四部分介绍ClassLoader防泄漏库。 我正在计划一系列关于类加载器泄漏的文章,也被称为PermGen内存泄漏。您到达这个页面可能是因为您的javaweb应用程序由于可怕的错误而崩溃java.lang.OutOfMemoryError: PermGen永久空间(或java.lang.OutOfMemoryError: Metaspace元空

Apache Pulsar系列之-客户端

Apache Pulsar系列之-客户端

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

在上一篇中介绍了Apache Pulsar的相关概念和架构体现,这一篇说明如何通过客户端程序操作Apache Pulsar。 Apache Pulsar入门 现在我们对什么是Apache Pulsar以及它是如何工作的有了更好的了解,让我们从中获得一些乐趣。 1. 首先,我们要在机器上安装并部署一个独立的集群。 $ wget https://archive.apache.org/dist/puls

Spock代码讲解-异常测试场景补充

Spock代码讲解-异常测试场景补充

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

本篇文章是Spock针对抛异常场景如何测试的补充,在那篇文章中对我们常用的参数校验或条件校验等业务场景代码如何编写单元测试做了讲解,但是有一种情况是,所有的异常测试都测试通过,即抛出了预期的异常类型,但是如何测试正确的case呢?即全部通过校验,没有抛出异常的场景。 简单一点的写法是单独再写一个测试case,只验证这一种通过的场景,跟原来的"thrown() + where"的case分开写,或者

元空间垃圾回收条件

元空间垃圾回收条件

jvm 3年前 (2020-11-20) 浏览: 2057 评论: 0

调整应用程序的内存使用需要了解Java如何使用内存,以及如何获得应用程序内存使用的可见性。 JVM内存使用率 JVM以多种不同的方式使用内存。内存的主要使用(但不是单一的)在堆中。堆之外,元空间和堆栈也会消耗内存。 Java堆——堆是存储类实例化(或对象)的地方。实例变量存储在对象中。在讨论Java内存和优化时,我们最常讨论堆,因为我们对堆的控制最大,而堆也是垃圾收集(和GC优化)发生的地方。堆大

Java8如何在运行时找出元空间metaspace的大小

Java8如何在运行时找出元空间metaspace的大小

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

Java8使用能够动态扩展的元空间。GC将在metaspace满时运行。 这是否意味着GC永远不会在metaspace上运行呢? 我的Java8应用程序占用了大量内存。我想知道我的元空间在运行时的大小。我该怎么做? 我正在考虑设置MaxMetaspaceSize。我应该把它设置成什么?有什么建议吗? jstat -gc PID 执行jvm指令 jstat -gc PID (用要监视的JVM的PID

Spock代码讲解-void方法测试

Spock代码讲解-void方法测试

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

这是Spock系列的第六篇文章,本篇讲解如何针对void方法,即无返回结果的方法测试 void方法 void方法的测试不能像前面几篇介绍的那样在then标签里验证返回结果,因为void方法没有返回值 一般来说无返回值的方法,内部逻辑会修改入参的属性值,比如参数是个对象,那代码里可能会修改它的属性值,虽然没有返回,但还是可以通过校验入参的属性来测试void方法 还有一种更有效的测试方式,就是验证方法

在Windows中设置JAVA_HOME变量

在Windows中设置JAVA_HOME变量

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

要在Windows上手动安装Confluence,需要设置一个环境变量,将Confluence指向Java安装目录。 在大多数情况下,您应该设置JRE_HOME环境变量,但是如果没有设置,Confluence将使用JAVA_HOME。 设置JAVA_HOME变量 要设置JRE_HOME或JAVA_HOME变量: 1. 找到Java安装目录 如果您在安装过程中没有更改路径,它将类似于C:\Progr

GraalVM系列之三-从JVM调用JS函数

GraalVM系列之三-从JVM调用JS函数

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

GraalVM是Oracle的一个新的开源项目,它试图使Java虚拟机成为运行所有主要语言的通用虚拟机。在GraalVM之前,已经很少有像Scala、Closure这样的语言将JVM作为其运行时。这对于这些语言来说是非常成功的。GraalVM进一步扩展了这一思想,使得以JVM为目标变得很容易,从而使更多的语言可以在JVM上共存。 GraalVM是从2014年开始的一个研究项目。推特从2017年开始

下一代分布式KV存储框架:RocksDB

下一代分布式KV存储框架:RocksDB

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

什么是RocksDB? RocksDB是一个用于快速存储的可嵌入持久键值存储。ROCKSDB也可以是客户机-服务器数据库的基础,但我们目前的重点是嵌入式工作负载。 RocksDB构建在LevelDB之上,可以在具有许多CPU核心的服务器上运行,可以高效地使用快速存储,支持IO绑定、内存中和一次写入的工作负载,并且可以灵活地进行创新。 性能如何比较? 我们对LevelDB进行了基准测试,发现它不适合

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

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

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

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

分布式数据库Apache Ignite介绍

分布式数据库Apache Ignite介绍

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

Apache Ignite是一个分布式数据库,用于具有内存速度的高性能计算 Ignite于2014年底由GridGain Systems开放源码,同年被Apache孵化器项目接受。Ignite项目于2015年9月18日毕业。 Apache Ignite的数据库使用RAM作为默认的存储和处理层,因此属于内存计算平台。磁盘层是可选的,但一旦启用,将保留完整的数据集,而内存层将根据其容量缓存完整或部分数

登录

忘记密码 ?

切换登录

注册