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

sun.misc.Unsafe是否在JDK9中公开?

宰父跃
2023-03-14
问题内容

我刚刚尝试JDK9发现它sun.misc.Unsafe现在不包含本机方法,而是将它们委托给some
jdk.internal.misc.Unsafe,例如:

@ForceInline
public int getInt(Object o, long offset) {
    return theInternalUnsafe.getInt(o, offset);
}

反过来,最新的实际上看起来像旧的sun.misc.Unsafe,但是现在这些方法都带有一些注释:

@HotSpotIntrinsicCandidate
public native void putObject(Object o, long offset, Object x);

那么,使用Unsafe启动JDK9是否“安全” ?现在是公共官方API吗?


问题答案:

这是一个很好的解释:

https://adtmag.com/blogs/watersworks/2015/08/java-9-hack.aspx

在Java
9中如何处理sun.misc.Unsafe?一方说,这应该是过去糟糕的过去的可怕骇客,应该予以消除。另一方说,大量使用Java是导致Java在基础架构领域兴起的原因,而流行的工具仍然需要Java。问题是,双方都是正确的。…

Reinhold在OpenJDK邮件列表中写道,建议在定义和使用它们的模块中封装不受支持的内部API,包括sun.misc.Unsafe。该提案现在是正式的Java增强提案(JEP)。本周发布的JEP
260(“封装大多数内部API”)旨在“默认情况下使大多数JDK内部API无法访问,但保留一些关键的,广泛使用的内部API,直到对其全部或大部分进行支持的替代品为止功能。”

简短的答案:您不应该在从头开始开发的任何新应用程序中使用它。



 类似资料:
  • 问题内容: 有谁知道任何全面的文档吗? 我正在寻找有关的文档。这就是我所能找到的全部。 有人知道更好的来源吗? 问题答案: 有一个很好的一篇关于它mishadoff的博客 在这里 。 该类虽然没有正式记录。

  • 我和JWT有一些安全问题。事情是这样的: 首先是创建一个只有一个密钥的令牌,并使用它来注册和验证令牌-(这是许多开发使用的规则)。 第二种是使用私钥和带有私钥的公钥进行注册,创建新的令牌,并且只使用公钥进行令牌验证。点击这里查看第二条规则中的图像 所以我的问题是哪两种方式更安全?第二条安全规则真的必要吗?谢谢

  • 问题内容: 在web应用指南规定我应该把给定的在我的HTML初始化火力地堡: 这样一来,每个访问者都可以接触到。该密钥的目的是什么,真的意味着要公开吗? 问题答案: 此配置代码段中的apiKey只能识别您在Google服务器上的Firebase项目。知道它不是安全风险。实际上,他们有必要知道它,以便他们与Firebase项目进行交互。使用Firebase作为其后端的每个iOS和Android应用程

  • weblogic是否通过Jmx公开指标,以便可以使用prometheus进行监控?监视weblogic服务器(线程、数据源…)的最佳解决方案是什么?

  • 克里斯·弗利特伍德软件开发人员儿童伙伴关系公司cfleetwood@smartstart.org

  • 问题内容: 我的第一个问题是- 构造函数应始终声明为公共吗? 如果我创建一个构造函数该怎么办。 我总是看到构造函数是隐式的。那么为什么构造函数有用呢?还是根本没有用。因为没有人可以调用它,或者永远也不能创建对象(由于构造函数)!这是我的第二个问题。 问题答案: 不, 构造函数 可以是,, 或(根本没有访问修饰符)。 做某事 并不意味着没有人可以访问它。这只是意味着该类之外的任何人都不能访问它。因此