首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    全网最硬核 JVM 内存解析 - 3.大页分配 UseLargePages

    前面提到了虚拟内存需要映射物理内存才能使用,这个映射关系被保存在内存中的页表(Page Table)。现代 CPU 架构中一般有 TLB (Translation Lookaside Buffer,翻译后备缓冲,也称为页表寄存器缓冲)存在,在里面保存了经常使用的页表映射项。TLB 的大小有限,一般 TLB 如果只能容纳小于 100 个页表映射项。 我们能让程序的虚拟内存对应的页表映射项都处于 TLB 中,那么能大大提升程序性能,这就要尽量减少页表映射项的个数:页表项个数 = 程序所需内存大小 / 页大小。我们要么缩小程序所需内存,要么增大页大小。我们一般会考虑增加页大小,这就大页分配的由来,JVM 对于堆内存分配也支持大页分配,用于优化大堆内存的分配。那么 Linux 环境中有哪些大页分配的方式呢?

    01

    全网最硬核 JVM 内存解析 - 7.元空间存储的元数据

    JVM 在执行 Java 应用程序时,将加载的 Java 类的许多细节记录在内存中,这些信息称为类元数据(Class MetaData)。这些元数据对于 Java 的很多灵活的语言以及虚拟机特性都是很重要的,比如动态类加载、JIT 实时编译、反射以及动态代理等等。不同的 JVM 加载类保存的内存信息是不一样的,它们通常在更低的内存占用与更快的执行速度之间进行权衡(类似于空间还是时间的权衡)。对于 OpenJDK Hotspot 使用的则是相对丰富的元数据模型来获得尽可能快的性能(时间优先,不影响速度的情况下尽量优化空间占用)。相比于 C,C++,Go 这些离线编译为可执行二进制文件的程序相比,像 JVM 这样的托管运行时动态解释执行或者编译执行的,则需要保留更多关于正在执行的代码的运行时信息。原因如下:

    04

    全网最硬核 JVM 内存解析 - 11.元空间分配与回收流程举例

    前文我们没有提到,如何限制元空间的大小,其实就是限制 commit 的内存大小。元空间的限制不只是受限于我们的参数配置,并且前面我们提到了,元空间的内存回收也比较特殊,元空间的内存基本都是每个类加载器的 ClassLoaderData 申请并管理的,在类加载器被 GC 回收后,ClassLoaderData 管理的这些元空间也会被回收掉。所以,GC 是可能触发一部分元空间被回收了。所以元空间在设计的时候,还有一个动态限制 _capacity_until_GC,即触发 GC 的元空间占用大小。当要分配的空间导致元空间整体占用超过这个限制的时候,尝试触发 GC。这个动态限制也会在每次 GC 的时候动态扩大或者缩小。动态扩大以及缩小

    01

    用windows或linux系统 可以上传ios app到苹果应用商店吗?

    我们知道发布一个app,一般是用到苹果的application loader助手上传应用,用过的都知道使用起来很繁琐,经常出错。而且只能运行在mac系统上,需要一定的硬件条件。 现在有个上架的辅助工具Appuploader,可以实现在windows,linux或mac上,不需要应用程序加载器和mac计算机,就可以发布app到app store,而且免费使用。 有几个实用的功能点 1、iOS证书和配置文件管理 Appuploader支持创建各种Apple证书,并且创建过程非常简单,只需输入证书名称,创建邮箱等信息即可创建证书。 2、在Windows,Linux或Mac中提交Ipa 通过appuploader,您可以在windows,mac或linux中将一个或多个ipa文件上传到appstore,故障的概率将大大降低; 通过mac中的应用程序加载器上传,并且经常上传失败的情况。 使用appuploader ipa文件,上传快速,成功率高。 3、批量上传屏幕截图和更新APP信息 提交屏幕截图到itunesconnect是一件非常麻烦的事情,不得不上传几十个屏幕截图,重复沉闷。使用appuploader上传屏幕截图可以打包上传 4、一次更新多个IOS应用程序 使用Appuploader工具可以一次上传多个应用程序到ios appstore。 5、使用模板更新程序 使用appuploader模板更新app关键字,标题,说明,屏幕或其他应用信息更加的便捷,效率大升。 6、更新应用程序说明 一般我们只更新appstore信息描述和关键字,使用Appuploader可以使用模板进行详细更新。

    03

    深入理解Java虚拟机到底是什么什么是Java虚拟机从进程的角度解释JVM

    什么是Java虚拟机 作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。 我们都知道java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的解释: 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处

    05
    领券