当前位置: 首页 > 面试题库 >

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

应俊爽
2023-03-14
问题内容

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


问题答案:

可以使用未记录的API。
sun.misc.Unsafe有一个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的更高版本中发生更改。我的建议是,如果需要获取页面大小信息并要使用Unsafe,则建议使用它,但是如果需要的话,可以使用合理的默认值(例如4K)(例如,如果类或方法不再存在)。



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

  • 主要内容:虚拟内存如何工作?,按需分页,虚拟内存管理系统的快照虚拟内存是一种存储方案,为用户提供了一个拥有非常大的主内存的幻觉。 这是通过将辅助存储器的一部分作为主存储器来完成的。 在这种方案中,用户可以加载比可用主存更大的进程,因为存在内存可用于加载进程的错觉。 操作系统不是在主内存中加载一个大进程,而是在主内存中加载多个进程的不同部分。 通过这样做,多程序的程度将会增加,因此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返回相同的哈希码。 表示它首先在其缓存中找到对象。如果得到引用,则将其返回。 现在回到问题,我们必须了解在编写