Tag: jvm

JVM是否保证缓存不是volatile变量?

JVM是否保证缓存不是volatile变量? 程序员是否可以依赖JVM来始终为每个线程本地缓存非易失性变量。 或者JVM可能会也可能不会这样做,因此程序员不应该依赖于JVM。 感谢您提前的答案。

为什么我的Java浏览器版本与命令行版本不同

Safari浏览器说我正在运行7 – 但命令行说我正在运行6: [~/prg/ceylon-dist/samples/helloworld]$ java -version java version “1.6.0_43” Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203) Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode) [~/prg/ceylon-dist/samples/helloworld]$ 我检查了/System/Library/Frameworks/JavaVM.framework/Versions/ ,根本没有显示1.7版本。

Java如何调用对象的function?

从我之前阅读的内容来看,在.java文件编译成.class文件之后,每个对象在擦除后都只是Object 。 如 Foo f = new Foo(); 编译成.class文件,并反编译,它变为: Object f = new Foo(); 那么JRE在运行时如何调用对象的function呢? 函数存储在内存中的哪个位置? 在对象里面? 或者使用类结构的层次结构并查找层次结构?

如何修复Eclipse Java虚拟机启动程序错误?

就像标题所说的那样,我遇到了eclipse JVM启动器的问题。 昨晚,一切都运转良好,据我所知,从那时起我的电脑上一切都没有变化。 但是,我今天早上醒来发现当我在eclipse中运行我的任何项目时,我发现了这个错误: Java Virtual Machine Launcher- Error: could not open C:\Program Files\Java\jre1.8.0_60\lib\amd6jvm.cfg 我已经validation了Path变量的完整性,( C:\Program Files\Java\jdk1.8.0_65\bin )现在,您可能会注意到,我的jdk是65版。我的JRE和Java安装也是如此。 我不明白为什么eclipse使用jre 60.我也检查了偏好并改变了jre版本65.没有运气。 此外,我运行了一个简单的java文件,没有通过命令行使用eclipse,运行/编译就好了。 我尝试将-vm标签(它还没有存在)添加到eclipse.ini并将其设置为jvm,但它没有帮助。 (我除了它)我不知道该做什么…请帮助,我已经尝试了我知道怎么做的一切。 谢谢! 编辑: 我的eclipse.ini文件如下: -startup ../../../.p2/pool/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar –launcher.library ../../../.p2/pool/plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417 -product org.eclipse.epp.package.java.product –launcher.defaultAction openFile –launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform –launcher.XXMaxPermSize 256m –launcher.defaultAction openFile –launcher.appendVmargs -install C:/Users/Sanjiv/eclipse/java-mars/eclipse -vmargs -Dosgi.requiredJavaVersion=1.7 -Xms256m -Xmx1024m -Doomph.update.url=http://download.eclipse.org/oomph/updates/milestone/latest -Doomph.redirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/ 编辑2我已经尝试重新安装java,eclipse和jdk。

与JSE JavaDoc相比,可以存在哪些类层次结构差异?

我目前正在maven post编译任务中生成一些ASM代码。 在Java 6中,引入了StackMapTable来表示堆栈中的数据类型,这在以后的版本中是必需的。 所以我自动确定可以在堆栈上的最具体的类。 现在我遇到了问题,在我的VM中,ThaiBuddhistDate和HijrahDateinheritance了ChronoLocalDateImpl,因此它会在StackMapTable中创建这种类型,这显然会在其他VM(甚至是版本)中崩溃。 所以我想,也许我应该将计算更改为最小强制,这可能会导致(理论上)类和接口的类似问题。 现在我正在尝试为我的问题找到解决方案,所以我必须弄清楚,可能会出现哪些差异。 附加类是否只能在inheritance层次结构中的任何位置出现? 假设JavaDoc具有inheritance层次结构,如: 对象 – Foo – Bar – FooBar 我可以在所有的inheritance结构中有其他类吗? 对象 – Baz – Foo – Bar – FooBar 对象 – Foo – Baz – Bar – FooBar 对象 – Foo – Bar – Baz – FooBar 类似于接口:接口是否也可以从其他接口inheritance,这些接口未在文档中定义,或者“仅”类可以具有额外的独立接口或接口,这些接口或接口基于已定义的接口或接口,甚至不是任何接口或接口?

与堆使用相比,Java应用程序的巨大系统内存使用量

我有像java框架这样的微服务。 许多java进程在一个盒子上运行(ubuntu 14.04.4 LTS)。 java进程使用很多系统内存,因此交换空间被大量使用。 jstat gc报告不解释系统内存使用情况。 所有java进程都使用参数运行 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 强制JVM将内存返回给系统。 没有参数,问题仍然存在。 一些java组件使用nashorn引擎来编写一些function。 有人可以解释这里的行为吗? 是否有任何jvm patameters限制巨大的系统内存使用? 如何命令操作系统对jvm的内存分配更具限制性? 一些数据: 组件A(与nashorn) 最佳: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2400 xxxxxx 20 0 13.933g 807496 7332 S 0.0 2.5 4180:15 java jstat -gc 2400: S0C S1C S0U S1U EC EU […]

如何修复:类文件中的未知常量标记32 com / sun / org / apache / xerces / internal / impl / xs / XMLSchemaValidator

我今天早些时候遇到了以下exception: Unknown constant tag 32 in class file com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator 我没有做任何事情导致它。 它突然出现了。 我提出了我自己的答案(见下文),但如果有人想要更多地了解它,请添加你自己的答案。

暂停测试执行直到应用程序变为空闲

实现一些util方法暂停测试(当前线程)执行直到应用程序变为空闲是否可行? 空闲意味着: 1.在一段时间内没有向事件队列添加GUI事件 2.在同一段时间内没有工作线程运行任何任务。 您能否提供实施/代码片段来跟踪以前的闲置情况?

JVM_FindSignal函数不断分配本机内存

我在linux机器上的tomcat8中部署的java web应用程序一直在泄漏本机内存,我试图通过使用如下所述的jemalloc分析来检测泄漏的来源: https : //github.com/jeffgriffith/native-jvm-泄漏在运行> 24小时的服务器上使用堆转储输出分析工具: Total: 794708494 B 789734456 99.4% 99.4% 789987533 99.4% JVM_FindSignal 3421211 0.4% 99.8% 3421211 0.4% Java_java_util_zip_ZipFile_getZipMessage 1036965 0.1% 99.9% 1036965 0.1% inflateBackEnd 262784 0.0% 100.0% 262784 0.0% __GI__dl_allocate_tls 253077 0.0% 100.0% 598675182 75.3% SUNWprivate_1.1 0 0.0% 100.0% 938397 0.1% 0x00007fb133688ef8 0 0.0% 100.0% 131136 0.0% 0x00007fb133696c2e 0 0.0% 100.0% 6146839 […]

java应用程序可以分配比jvm启动参数指定的内存更多的内存吗?

假设java应用程序没有使用任何本机库。 有没有办法可以分配比jvm启动参数指定的内存更多的内存? 反过来问:我可以依赖java应用程序永远不会分配比JVM启动参数限制更多的内存吗?