当前位置: 首页 > 知识库问答 >
问题:

通过java代码获取虚拟内存页面大小

姜德泽
2023-03-14

是否可以获取java应用程序作为java int变量运行的操作系统的虚拟内存页面大小?如果是,如何?

共有2个答案

陆俊智
2023-03-14

参见以下类别;可以使用getRuntime()获取实例-

编辑:正如评论中所建议的,我应该提供更多关于从哪里开始的细节。您需要为不同的操作系统运行几个不同的脚本;您可以使用System.getProperty()来获取类型。

您可以通过谷歌搜索“[os] [内存页面大小]脚本”来查找示例脚本。

请注意,这将是一个相当棘手的解决方案,我并不是说它很好,只是它是可能的。

另外:我在谷歌上搜索时得到的另一个想法(虽然我不确定这是否可行,因为我没有做过)是从pages上的维基百科页面获取C代码,并将其作为原生java导入。

羊舌旭尧
2023-03-14

可以使用未记录的API<代码>sun.misc。不安全有一个方法pageSize(),根据文档:

报告本机内存页的大小(无论是什么)。该值将始终是2的幂。

示例代码:

import java.lang.reflect.Field;

import sun.misc.Unsafe;

public class PageInfo
{
    public static void main(String... args)
    throws Exception
    {
        Field f = Unsafe.class.getDeclaredField("theUnsafe");
        f.setAccessible(true);
        Unsafe unsafe = (Unsafe)f.get(null);

        int pageSize = unsafe.pageSize();
        System.out.println("Page size: " + pageSize);
    }
}

请注意,sun.misc.Unsafe是未记录的,不受支持的,并且可能会随着JDK的后续版本而改变。如果您需要获取页面大小信息并想使用Unsecurity,我的建议是使用它存在,但在需要时(例如,如果类或方法不再存在)回退到合理的默认值(例如,4K)。

 类似资料:
  • 问题内容: 是否可以获取运行Java应用程序的操作系统的虚拟内存页面大小作为java int变量?如果是,怎么办? 问题答案: 可以使用未记录的API。 有一个pageSize()方法,根据文档: 报告本机内存页面的大小(以字节为单位)。此值将始终为2的幂。 样例代码: 请注意,未记录的内容,不受支持的内容可能会在JDK的更高版本中发生更改。我的建议是,如果需要获取页面大小信息并要使用,则建议使用

  • 主要内容:虚拟内存如何工作?,按需分页,虚拟内存管理系统的快照虚拟内存是一种存储方案,为用户提供了一个拥有非常大的主内存的幻觉。 这是通过将辅助存储器的一部分作为主存储器来完成的。 在这种方案中,用户可以加载比可用主存更大的进程,因为存在内存可用于加载进程的错觉。 操作系统不是在主内存中加载一个大进程,而是在主内存中加载多个进程的不同部分。 通过这样做,多程序的程度将会增加,因此CPU利用率也会增加。 虚拟内存如何工作? 在现代语言中,虚拟内存近来变得非常普

  • 问题内容: JavaScript代码将从www.example.com通过google chrome中的网址栏启动,因此我无法使用jquery。我的目标是当我在www.example.com中启动代码时,将www.example.com/page.html的完整html源代码传递给javascript中的变量。这可能吗?如果可以,怎么办?我知道要获取当前页面源,但我不确定如何做到这一点。我认为可以

  • 处理器的虚拟内存子系统为每个进程实现了虚拟地址空间。这让每个进程认为它在系统中是独立的。虚拟内存的优点列表别的地方描述的非常详细,所以这里就不重复了。本节集中在虚拟内存的实际的实现细节,和相关的成本。 虚拟地址空间是由CPU的内存管理单元(MMU)实现的。OS必须填充页表数据结构,但大多数CPU自己做了剩下的工作。这事实上是一个相当复杂的机制;最好的理解它的方法是引入数据结构来描述虚拟地址空间。

  • 8.4.1 什么是虚拟PV 虚拟PV代码允许触发特定事件时将其作为虚拟网页浏览处理,允许自定义页面的URL与页面标题。 代码如下: //只修改url stm_clicki('send', 'pageview', '/path'); //同时修改url和title stm_clicki('send', 'pageview', {'page': '/path', 'title': '标题'});

  • 问题内容: 我的问题与JVM的安全级别有关 我们如何通过证明哈希码来从内存中获取对象? 今天我在想。我在执行环境One中创建类A的对象。并从此处获取该对象的哈希码。 现在在另一个执行环境中,我想通过提供哈希码来返回A类对象。 我认为有可能。因为当我执行环境一时。我一次又一次地得到那个JVM返回相同的哈希码。 表示它首先在其缓存中找到对象。如果得到引用,则将其返回。 现在回到问题,我们必须了解在编写