问题标签 [jvm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
125133 浏览

java - Java 应用程序的入口点:main()、init() 还是 run()?

到目前为止,我一直在使用public void run() {}方法在 Java 中执行我的代码。何时/为什么要使用main()init()代替run()

0 投票
6 回答
1424 浏览

java - 更改 java 版本

我有一个在 java 1.3 上运行的服务器 - 客户端应用程序;我想逐步更改为 java 1.6,这意味着最初的几个客户端,而不是其余的客户端,最后是服务器......我想知道你能否指导我解决一些可能出现的常见问题以及我应该注意什么?

0 投票
4 回答
1979 浏览

java - 在最近的 JVM 中,不可见的引用仍然是一个问题吗?

我正在阅读Java 平台性能(遗憾的是,自从我最初提出这个问题以来,该链接似乎已经从互联网上消失了),第 A.3.3 节让我担心。

我一直在假设退出范围的变量将不再被视为 GC 根,但本文似乎与此相矛盾。

最近的 JVM,尤其是 Sun 的 1.6.0_07 版本,是否还有这个限制?如果是这样,那么我有很多代码要分析......

我问这个问题是因为这篇论文是 1999 年的——有时情况会发生变化,尤其是在 GC 领域。


由于该论文不再可用,我想解释一下这个问题。该论文暗示在方法内定义的变量将被视为 GC 根,直到方法退出,而不是直到代码块结束。因此,必须将变量设置为 null 以允许对引用的对象进行垃圾收集。

这意味着在 main() 方法(或包含无限循环的类似方法)的条件块中定义的局部变量将导致一次性内存泄漏,除非您在变量退出范围之前将其置空。

所选答案中的代码很好地说明了这个问题。在文档中引用的 JVM 版本上,当 foo 对象在 try 块结束时超出范围时,无法进行垃圾回收。相反,JVM 将保持打开引用直到 main() 方法结束,即使任何东西都不可能使用该引用。

这似乎是一个想法的起源,即使变量引用为空将有助于垃圾收集器,即使该变量即将退出范围。

0 投票
3 回答
532 浏览

java - 通过 CreateProcess() 启动的 JVM 丢失了类路径库

我使用 CreateProcess(或 _spawnv())从 Windows VC++ 6 程序启动以下命令行(进程):

  • java -cp c:\dir\updates.jar;c:\dir\main.jar 主要

并且updates.jar中的类更新(覆盖main.jar中的一些)未被读取或找到。就好像无法找到或读取updates.jar 库一样。

如果我从快捷方式或从适当的命令行启动同一行,则会找到并正确执行所有内容。

如果我从命令行启动 JVM,让它保持运行,然后启动可执行存根(上图),那么一切正常。(这使得问题看起来像是文件权限问题)。

任何见解将不胜感激!

——爱德华

0 投票
13 回答
139167 浏览

java - 如何在不使用配置程序的情况下调整 Tomcat 5.5 JVM 内存设置

我需要将 Tomcat 内存设置配置为大型安装的一部分,因此事后使用配置应用程序手动配置 Tomcat 是不可能的。我以为我可以将 JVM 内存设置放入 JAVA_OPTS 环境变量中,但我正在使用 jconsole 对其进行测试,以查看它是否有效,但它……没有。

根据下面的评论, CATALINA_OPTS 也不起作用。到目前为止,我可以让它工作的唯一方法是通过 Tomcat 配置 GUI,这不是我的问题可接受的解决方案。

0 投票
3 回答
6503 浏览

java - 一般问题:Java 有堆和本地堆栈。你可以从堆中访问任何对象吗?

我真的在研究按值传递与 Java 如何分配对象以及 java 将对象放入堆栈中的作用之间的区别。

无论如何可以访问堆上分配的对象吗?java 强制执行哪些机制来保证正确的方法可以访问堆外的正确数据?

看起来如果您很狡猾,甚至可能在运行时操纵 java 字节码,那么您可能能够在不应该的时候操纵堆外的数据?

0 投票
7 回答
6297 浏览

java - 哪个库/程序可用于生成 Java 字节码?

我知道BCEL,但是这个项目似乎已经死了,因为它已经两年没有发布了。Java 世界继续前进。例如 JDK 1.6 有一个新的类文件格式。

那么什么库可以用来为JVM创建字节码。如果没有库,程序也可以,如果我可以详细操作生成的代码,例如字节码汇编器。

有什么软件可以推荐?是不是也很容易使用?有很好的例子/教程吗?

编辑:对于所有的问题:是的,javac 很好。但是为了在运行时生成一些类,直接指向字节码的路径会更干净。

0 投票
4 回答
644 浏览

java - 如何在混合 Java 版本的世界中使用泛型?

我非常喜欢泛型,并尽可能使用它们。时不时地,我需要在另一个项目中使用我的一个类,该项目必须在旧 JVM(5.0 之前)上运行,需要在 JavaME(也不允许泛型)或 Microsoft J#(非常差)上运行支持泛型)。

目前,我手动删除了所有泛型,这意味着也插入了许多强制转换。

由于泛型被认为是仅编译时的,并且每段泛型代码都可能自动转换为非泛型代码,我想知道是否有任何工具可以为我做到这一点。

如果没有这样的工具,我还能如何解决这个问题?我应该完全停止使用泛型吗?

已经有与字节码兼容性相关的答案。如果我出于某种原因需要源代码兼容性怎么办?

0 投票
4 回答
3098 浏览

python - 在 Jython 上开发 Django 有问题吗?

的背景

我正在和朋友一起构建一个相当大的 Web 应用程序,我们决定在 Python 上使用 Django 框架。Django 为我们提供了很多我们需要的特性,所以请不要推荐替代框架。

我唯一遇到问题的决定是我们是使用 Python 还是 Jython 来开发我们的应用程序。现在我对 Java 非常熟悉,并且可能会从 JDK 中的库中受益。我知道的 Python 最少,但我利用这个项目作为学习新语言的机会——所以大部分工作将用 Python 编写。

Jython 的吸引力当然在于 JVM。启用 python/django 的 web 主机的数量非常少——而我假设我可以将 jython/django 应用程序放在各种各样的主机上。这不是一个重大的设计决定,但我认为仍然需要做出决定。对于 jvm 的可访问性,我真的更喜欢 jython 而不是 python。

问题

与常规 python 相比,Jython 有很多限制吗?在 jython 上运行 django 会导致问题吗?Jython 团队与 Python 一起发布更新的速度有多快?Django 会像在 Jython 上宣传的那样工作(具有非常少的预配置)吗?

决定

感谢您的有用评论。我想我要做的是在 Jython 中开发 JVM 支持——但尝试只使用 Python 代码/库。可移植性不是主要问题,所以如果我需要 JDK 中的库(在 python 中不容易获得),我会使用它。只要 Django 得到完全支持,我就很高兴。

0 投票
3 回答
1360 浏览

java - 没有 Java 的 J2ME 开发?

我正在第一次涉足 J2ME 世界。我更喜欢使用函数式语言进行开发。

Scala 曾经支持 CLDC,但不再维护。Bigloo似乎已经消失了。

解释器(例如 Jython)是不行的,因为 J2ME 应用程序必须很小(至少我的应用程序必须很小)。

我想知道任何能够使用另一种 JVM 语言来构建 J2ME 应用程序的人。