在Java中,"::"(双冒号)运算符在"Chunk::new"中的含义是什么?

3

我从一个Tomcat进程中获取致命错误日志,在日志中它说:

#
# A fatal error has been detected by the Java Runtime Environment:
#
# java.lang.OutOfMemoryError: requested 1035152 bytes for Chunk::new. Out of swap space?
#
#  Internal Error (allocation.cpp:215), pid=2060, tid=3980
#  Error: Chunk::new
#
# JRE version: 6.0_21-b07
# Java VM: Java HotSpot(TM) Server VM (17.0-b17 mixed mode windows-x86 )
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

我的问题并不是关于OutOfMemoryError,而是关于如何解释“Chunk::new”这个短语。

我在这里看到双冒号似乎是Java中的一个运算符,但我不确定它具体是做什么的。这是否与我的情况有关?


1
那是一个 C++ 错误... - mre
那是一个错误描述,而不是运算符。 - AllTooSir
1
这是本地代码错误,不是Java的问题。这是一个c构造,与Java中的点相同。 - Boris the Spider
啊!这样就更有意义了。好吧,我想无论谁把那个作为答案都会被接受 :) - Alexander Bird
2
@BoristheSpider,我认为是C++。第一个单词指的是一个类名。 - sharakan
2个回答

8
在Java 8版本之前(参见this question),这并没有任何意义。
你所看到的是C++代码。第一个单词是类名,第二个单词是方法名。::本身被称为作用域解析运算符
你得到的错误来自JVM本身的C++代码。

1
而这个 new 操作符恰好在 src/hotspot/src/share/vm/memory/allocation.ccp 的第 311 行中被定义,可以从 http://hg.openjdk.java.net/jdk7/hotspot/hotspot 获取。如果还有其他人关心的话 :). - Alexander Bird
现在它表示一件事情。https://dev59.com/4WIj5IYBdhLWcg3wrG4q - Hernán Eche
愚蠢的进步之旅...我已经更新了答案,使其适用于Java 8之前的版本。 - sharakan

0

这表示Java无法从操作系统中获取更多的内存。

您正在使用的JVM是基于C++开发的,但JVM的东西是供应商特定的。

与此运算符::无关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接