我为Clojure添加了耐用性,最后我可以添加函数了。在Clojure中,使用调用方法(以及其他方法)将字节字节编译为类。这样,功能就是一流的。为了使这些持久化,我需要序列化和反序列化这些类。如何在不访问.class文件的情况下获取类的字节码?
如果我弄错了,请纠正我,但是使用代理程序需要产生一个单独的VM,并且该代理程序连接到第一个VM。我需要从同一台VM执行此操作。
仅使用Serializable设置和获取Class对象是不够的。反序列化后,我需要加载该类,并且在后续的VM实例上,可能会发生类名冲突。我需要修改字节码,以在反序列化/类加载时将类重命名为唯一的名称。
您可以编写自己的代码,ClassLoader
并破解一个在加载类时记录字节码的方案。
您将需要重写findClass
以自己找到该类文件,将其加载到内存中,将数据保存在某处(以供以后序列化),然后调用defineClass
以在JVM中定义该类。
问题内容: 在Java中,是否有一种方法(在运行时)获取定义了特定类的字节码? 换句话说,有没有一种方法可以获取在加载特定类时传递给数组的数组?我看到已经声明了此方法,因此似乎无法创建一个自定义类来拦截类定义。 过去,我曾使用该类通过该方法获取字节码,但我希望使用更规范的解决方案。 问题答案: 这是如何实现代理的说明
问题内容: 假设我在同一台计算机上同时运行两个Java程序。这些程序将在单个JVM实例中运行还是在两个不同的JVM实例中运行? 问题答案: 如果您使用命令(从命令行)开始每个命令,它们将作为完全独立的JVM运行。 “程序”可以作为在一个JVM中运行的单独线程启动。
问题内容: 我该如何实现? 到目前为止,我尝试过的所有操作始终返回类型,而不是所使用的特定类型。 问题答案: 正如其他人所提到的,只有在某些情况下才能通过反思来实现。 如果你确实需要类型,这是通常的(类型安全的)解决方法:
问题内容: 我该如何实现? 到目前为止,我尝试过的所有操作始终返回类型,而不是所使用的特定类型。 问题答案: 正如其他人所提到的,只有在某些情况下才能通过反射来实现。 如果你确实需要类型,这是通常的(类型安全)解决方法:
问题内容: 我正在尝试对一堆数据进行排序,以使输入到程序的数据大小可以大于JVM可用的内存,并且处理所需的外部排序要比Quicksort慢得多。 有什么方法可以在运行时获取可供JVM使用的内存,以便我可以在尽可能多的地方使用排序,并且仅在数据输入太大时才切换到Mergesort吗? 问题答案: 在类中查看以下方法: 例 还要注意,如果总内存已用完,则始终可以使用JVM参数分配更多的堆来启动JVM。
问题内容: 由于Java实现()和Android的虚拟机DalvikVM都是开源的,因此必须有可能在Google的DalvikVM之上实现Sun的JavaVM。这样就可以在android上开箱即用地运行基于JVM的应用程序和语言()。 是否正在持续努力以产生Sun JVM的这种实现? 问题答案: OpenJDK使用本机代码,因此它是一个不平凡的端口……至少有一个用Java编写的VM(JikesRV