jvm相关内容

垃圾收集器如何知道堆栈帧上的引用?

现代垃圾收集器(如在 CLR、JVM 中)使用哪些技术来判断堆栈中引用了哪些堆对象? 具体来说,VM 如何从知道堆栈开始的位置返回到解释所有对堆对象的本地引用? 解决方案 在 Java 中(很可能在 CLR 中,虽然我不太了解它的内部结构),字节码是用对象与原始信息输入的.因此,字节码中有数据结构来描述每个堆栈帧中的哪些变量是对象,哪些是原语.当 GC 需要扫描根集时,它使用这些 S ..
发布时间:2022-01-22 12:49:11 其他开发

如何让 IntellIJ 对项目中的所有主文件使用 JVM 选项?

我可以配置一个主文件以使用所需的本地文件,但在我的项目中有多个主要功能,所以当我可以选择调试任何我想要的文件时,我需要所有文件来使用 JVM 选项,而无需创建每个人的配置 解决方案 您可以更改Defaults节点下的配置(新版本为Templates),所有新的配置将继承其设置.确保更改正确的默认配置类型,Application 很可能是您需要的. 参考文档详情. ..
发布时间:2022-01-20 21:42:47 其他开发

为什么java中默认不启用assert

我的问题是从语言设计的角度. 为什么 assert 的处理方式不同,即它引发错误而不是异常,默认情况下不启用等等. 它确实看起来很优雅(非常主观的意见),易于阅读(再次主观)进行验证和还有一些工具 (IDE) 可以对其进行实时评估并根据断言提供警告. 解决方案 我会说原因是 Java 的默认值适用于生产代码(软件的“发布"版本)——如果用户需要构建你的他们将使用提供的默认代码, ..
发布时间:2022-01-16 12:45:27 Java开发

监控 Java 应用程序自己的内存使用情况

我想在一个 Java 进程中运行多个 REST Web 应用程序,以在 Akka 的帮助下节省内存并轻松扩展.我想估计每个请求处理程序消耗多少内存并检测这些对整个系统的危险. 是否可以在该进程内几乎实时监控内存使用情况,并找出每个请求处理程序使用了多少内存?我需要什么来实现这一目标?有什么工具吗? 是否可以捕获 内存不足异常 并根据内存使用情况做一些事情,例如仅崩溃请求处理程序超出假定 ..
发布时间:2022-01-16 12:45:09 Java开发

字符串实习在 Java 7+ 中如何工作?

所以,我意识到我要问的问题与一个被一次又一次殴打致死的话题有关,但是,即使在阅读了我能找到的所有答案和文档之后,我仍然很友善对字符串实习感到困惑.可能是因为我对JVM缺乏了解;也许这是由于 Java 7 中引入的更改贬低了许多上述答案和文档.无论哪种方式,我都被卡住了,我希望有人可以帮助我更清楚地理解这个概念...... String a = "text";字符串 b = 新字符串(“文本"); ..
发布时间:2022-01-16 12:45:02 Java开发

以编程方式触发完整的堆栈转储?

当我向我的 java 进程发送 SIGQUIT 命令时(使用 kill -3 或 kill -QUIT ),它会将所有堆栈的跟踪打印到 stderr,其中包含有关持有的锁和死锁检测的信息.我可以从程序内部以某种方式触发它吗?我想在每次某个操作花费太长时间时自动执行此操作. 我知道可以获得堆栈跟踪(请参阅 有没有办法在不抛出异常的情况下转储堆栈跟踪?, 线程转储程序/JDI(Java调试器接口 ..
发布时间:2022-01-16 12:44:38 Java开发

使用 Sigar API 获取 JVM CPU 使用率

我正在使用 Sigar 获取应用程序服务器中当前运行的 JVM 的 CPU 使用率并将其存储以供历史查看此数据,但我总是得到 0% 的 CPU 百分比. 同时,我打开我的 visualVM 以监控 CPU 使用情况,我可以看到 VisualVM 中的 CPU % 定期变化,而它总是使用 Sigar 报告 0%. 这是我定期运行的代码: Sigar sigar = new Sigar( ..
发布时间:2022-01-16 12:44:28 Java开发

Java中为一个Integer对象分配多少内存?如何找出任何自定义对象的这个值?

衡量应该使用堆中多少内存来创建特定类型的新对象的正确方法是什么(让我们谈谈整数以保持简单)? 这个值可以不用实验计算出来吗?这种情况下的规则是什么?这些规则是否在某处严格指定,或者它们可能因 jvm 而异? 解决方案 它可能因JVM而异. 您可能会喜欢 Oracle 工程师的这篇博文: 对于 32 位 Hotspot JVM 上的 Java Integer,32 位有效负 ..
发布时间:2022-01-16 12:44:23 Java开发

如何检测String.substring是否复制了字符数据

我知道对于 Oracle Java 1.7 更新 6 及更高版本,在使用 String.substring 时,复制 String 的内部字符数组,对于旧版本,它是共享的.但我没有找到可以告诉我当前行为的官方 API. 用例 我的用例是:在解析器中,我喜欢检测 String.substring 是否复制或共享底层字符数组.问题是,如果字符数组是共享的,那么我的解析器需要使用 new S ..
发布时间:2022-01-16 12:44:14 Java开发

Java“常量太多"JVM 错误

我正在开发一个在运行时生成和编译类的应用程序.这有时会产生大量的生成代码. 对于我们的一个测试用例,我从 JVM 收到一个错误: TestClass.java:83865: 常量太多 就这个.我看过其他关于类似错误的报告,但在这些情况下,错误消息会抱怨常量池.但在这种情况下它不会. 如果这意味着达到了 JVM 的常量池的限制,那是什么意思?我的意思是,就 Java 代码而言,这些常 ..
发布时间:2022-01-16 12:44:06 Java开发

需要有关 Apple OS X 的替代 JVM 的指导

Apple 已经弃用了他们的 JVM,它可能在未来的 OS X 版本中不受支持.我主要不是 Java 开发人员,但我偶尔会编写 Java 应用程序,以及主要应用程序我致力于使用 Tomcat 和 Opal 为用 C 编写的命令行可执行文件提供 SOAP 接口. 我不断看到建议直接使用另一个 JVM,但这似乎是可笑的油嘴滑舌.在这一点上,我相信在 OS X 上运行的 Oracle JVM 纯粹 ..
发布时间:2022-01-16 12:43:58 Java开发

使用大量内存的 Java 应用程序.使用-Xmx?

我有一个 java 应用程序,它在 16G 的机器上使用大约 15G.我不知道是否应该设置最大堆大小. 如果设置了 jvm 是否会吃掉所有的内存,然后开始垃圾收集并在它翻腾 15G 的堆对象时停止一切? 如果不是这样,jvm 会因为不使用机器上所有可用的内存而损害性能. 我的特定虚拟机是:Java HotSpot(TM) 64 位服务器虚拟机(内部版本 1.6.0_03-b05, ..
发布时间:2022-01-16 12:43:19 Java开发

JIT 编译的代码在哪里?

所以我有这个方法,用Java写的: public void myMethod(int y){整数 x = 5 + y;做某事(x);} 假设我的应用程序调用了很多次.. 在 Java 虚拟机上运行此方法的编译代码时,JVM 将首先解释该方法.然后过了一段时间,如果我理解正确,它将决定将其编译为机器语言. 此时, 会被内存中的机器码覆盖吗?如果它被覆盖,大小差异的问题将如何解决 ..
发布时间:2022-01-16 12:43:00 Java开发

字符串文字、实习和反射

我正在尝试为这个问题找到第三种解决方案. 我不明白为什么这不打印 false. 公共类 MyClass {公共 MyClass() {尝试 {字段 f = String.class.getDeclaredField("value");f.setAccessible(true);f.set("true", f.get("false"));} 捕捉(异常 e){}}公共静态无效主要(字符串[] ..
发布时间:2022-01-16 12:42:49 Java开发