草庐IT

java - .net 的 GC.KeepAlive 的 Java 等价物是什么?

.NET有一个名为GC.KeepAlive(Object)的函数.它的唯一目的是确保引用对象的生命周期持续到代码流到达调用为止。这通常是不必要的,除非与native代码进行互操作。我有一个情况,我有一个通过JNI访问的C++对象图,其中某些根对象需要保持Activity状态以保持子对象Activity。根对象和子对象在JVM领域都有镜像。但是,如果在C++端收集并释放根对象(通过SWIG生成的终结器),则子对象将变得无效,因为它们的C++支持对象将被释放。这可以通过确保作为对象图根的局部变量的生命周期超过子对象的最后一次使用来解决。所以我需要一个不对对象做任何事情的惯用函数,但不会被优

Java CMS 被忽略,取而代之的是 Full GC

我正在运行一个使用CMS作为终身收集器的Java服务器。在负载测试下运行,我大约每1秒看到一次年轻Collection,大约每5米看到一次永久(并发)。这很好。当我以大约1/2容量的实际流量运行时,我大约每4秒收集一次年轻集合,大约每7米收集一次终身收集(!并行,停止世界!)。为什么JVM决定进行完全停止世界收集而不是使用CMS收集器?从gc.log中,您可以看到“FullGC”正在运行,并且需要3秒才能完成。这里没有并发模式故障。没有明确请求集合。1350.596:[GC1350.596:[ParNewDesiredsurvivorsize119275520bytes,newthre

java - 是否可以从 gc 的角度将 java 对象标记为不可回收以节省 gc-sweep 时间?

是否可以从gc角度将java对象标记为不可回收以节省gc-sweep时间?类似于http://wwwasd.web.cern.ch/wwwasd/lhc++/Objectivity/V5.2/Java/guide/jgdStorage.fm.html的内容特别是non-garbage-collectible容器那里(non-garbage-collectable?)。问题是我有很多普通的临时对象,但我有更大(几千兆)的对象存储用于缓存目的。JavaGC无缘无故应该遍历所有这些缓存千兆字节以试图找到任何要收集的东西,因为它们包含有自己的超时的缓存数据。这样我就可以以自定义方式将我的数据划

java - 如何在应用程序中持续保持 5GB 内存,而不会因 GC 而导致性能不佳?

我的应用程序是地理应用程序。由于要求响应时间短,我的每个实例都将所有点加载到内存并将它们存储在结构(四叉树)中。我们每分钟加载所有点(与数据库同步)并将它们放入几个四叉树中。我们现在有0.5GB积分。我正在努力准备下一个级别的5GB积分。虚拟机:-XX:NewSize=6g-Xms20g-Xmx20g-XX:+UseConcMarkSweepGC-verboseGC-XX:+PrintGCTimeStamps-XX:+PrintGCDateStamps-XX:+PrintGCDetails由于GC,实例的启动花费了很多时间,另外应用程序一直受到GC的影响。我想引用大堆的GC。我能想到几

超越CPU和GPU:引领AI进化的LPU

什么是CPUCPU(CentralProcessingUnit)是由数十亿个晶体管构成的,可以拥有多个处理核心,通常被称为计算机的“大脑”。它对所有现代计算系统至关重要,因为它执行计算机和操作系统所需的命令和进程。CPU在决定程序运行的速度上也很重要,从浏览网页到建立电子表格都离不开它。什么是GPUGPU(GraphicsProcessingUnit)是由许多更小、更专业的核心组成的处理器。这些核心通过协同工作,当处理任务可以同时(或并行)分配到许多核心时,它们能够提供巨大的性能。GPU是现代游戏的重要组成部分,能够提供更高质量的视觉效果和更流畅的游戏体验。GPU在人工智能中也非常有用。CPU

基于可用 FREE cpu 的 Java 并发性

问题当且仅当有空闲CPU时,我如何扩展以使用更多线程?像ThreadPoolExecutor这样的东西,它在cpu核心空闲时使用更多线程,如果没有空闲则更少或只使用一个线程。用例现状:我的Java服务器应用程序处理请求并提供结果。有一个ThreadPoolExecutor以合理数量的最大线程为请求提供服务,遵循以下原则:cpu核心数=最大线程数。执行的工作是cpu繁重的,并且有一些磁盘IO(DB)。代码是线性的,单线程的。处理单个请求需要50到500毫秒。有时每分钟只有几个请求,有时同时有30个请求。具有12个内核的现代服务器可以很好地处理负载。吞吐量不错,延迟还可以。期望的改进:当请

java - Google App Engine 上的 CPU 带宽是太贵了还是我的代码?

我想对GAE读取性能进行基准测试。正在从数据存储中获取大约10,000个实体。这些实体包含3个属性名称(约16个字符)、描述(约130个字符)和一个时间戳。没有异常大的东西。这是我看到的:平均而言,读取10k个实体大约需要11秒。不确定这是否被认为是快、慢或合理的,但无论如何都不是太令人兴奋。更有趣的发现是CPU计量。执行此读取操作100次大约消耗3.0个CPU小时。费用为0.30美元。鉴于这里没有进行CPU密集型算法,这不会使GAE的CPU带宽变得相当昂贵吗?(当然,它以Python脚本等形式提供24/7系统管理员,但仍然......)或者这是我的Java代码中的内容:http://

开源!OpenHarmony手机CPU信息应用

想了解更多关于开源的内容,请访问:51CTO鸿蒙开发者社区https://ost.51cto.com笔者最近写了一个OpenHarmony开发者手机应用开获取手机的各种信息,源码开源如下:CPU_device_information开发环境API10硬件:OpenHarmony开发者手机OpenHarmony4.O.10.309OpenHarmony开发者手机购买链接:https://xslht.com/dp1.应用安装步骤下载仓库CPU_device_information(API10),点击该仓库init.bat脚本2.实现功能完成了开发者手机以下信息的获取。-CPU核心数-SOC型号-G

java - 使用 G1 GC 和 trove 库的 JVM 崩溃

我们有以下问题:在我们的某些Linux机器上,使用trove库和G1GC的Java应用程序将很快崩溃并显示以下类型的消息:AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment:SIGSEGV(0xb)atpc=0x00002aaaaaef81d1,pid=31063,tid=1141000512JREversion:6.0_29-b11JavaVM:JavaHotSpot(TM)64-BitServerVM(20.4-b02mixedmodelinux-amd64)Problematicframe:Jgnu.trove.impl.h

java - Java获取CPU线程使用率

我对获取给定JNIblock的CPU利用率有疑问。我正在底层C++JNInative方法中进行一些密集的CPU计算。我正在优化此计算并希望根据不同的输入对其进行基准测试。我需要一些关于如何衡量这一点的指导。到目前为止,我考虑过的替代方案是使用JMXThreadMXBean测量调用JNI方法的当前线程的系统CPU使用率。但是,我不确定JNI代码是否在调用线程上下文中执行。当线程产生更多线程时会发生什么?使用JMXOperatingSystemMXBean获取整个JVM的CPU使用率。理想情况下,这不是我想要的,因为JVM中的并行执行可能会调整基准测试。使用getrusage(..)进行外