草庐IT

java - VMware guest 中的 JVM 堆大小调整

这个问题的措辞可能更好:在VMwareESX等管理程序上运行Java服务器如何影响Java堆?从操作系统/管理程序的角度来看,对JVM堆的访问是随机的guest操作系统或管理程序很难优化随机访问的内存鉴于此,管理程序能否检测到JVM堆中未使用的页面?Java服务器应用程序的传统观点认为,如果您在JVM启动时分配所有堆,而不是允许堆在需要时动态调整大小,则性能最佳。换句话说,如果您将堆大小设置为1GB,您的Java进程将获取1GB的连续虚拟地址空间(加上二进制文件所需的任何内容),其他应用程序不再可用的内存。VMware是否足够聪明,可以检测到其中一些堆实际上未被使用?这对GC性能有何影

java - 当 JVM 停止线程时,为 java 用户线程调用清理方法

我有在Linux上运行的J2SE应用程序。我已经停止应用程序脚本,我正在其中杀死J2SEpid。这个J2SE应用程序有6个无限运行的用户线程,它们将轮询后端数据库中的一些特定记录。当这个javapid被杀死时,我需要为每个长时间运行的线程执行一些清理操作,比如连接到数据库并将一些正在进行的事务的状态设置为空。有没有办法在每个线程中编写一个方法,在线程将要停止时由JVM调用。 最佳答案 您始终可以尝试使用Runtime.addShutDownHook实现关闭Hook,或者将长时间运行的代码封装在try中,将清理封装在finally中。

java - 是否每次执行 java 命令都会启动一个单独的 JVM?

是否每次执行java命令都会启动一个单独的JVM? 最佳答案 是的,它确实启动了一个单独的JVM。 关于java-是否每次执行java命令都会启动一个单独的JVM?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2851857/

java - Maven:找出是在 32 位还是 64 位 JVM 中运行

如何根据执行maven的VM是32位还是64位JVM来启用或禁用maven配置文件?我试过这个:x86或amd64分别检测32/64位VM,但这在64位Windows上运行的32位VM上失败,因为它激活64位配置文件。 最佳答案 在SunVM中,检查系统属性sun.arch.data.model32bitstuffsun.arch.data.model3264bitstuffsun.arch.data.model64引用:HotSpotFAQ 关于java-Maven:找出是在32位还是

java - 空无限循环和 GC (JVM)。请说明效果

我的空无限循环publicstaticvoidmain(String[]args){while(true){}}并在JavaVisualVM中进行分析(图片)如您所见,我不创建对象。为什么要换一个堆?请解释一下效果。为什么? 最佳答案 基本上任何Java应用程序都是多线程的,您的主线程不分配内存这一事实并不意味着其他线程也不分配。事实上,很可能通过VisualVM附加并显示GC选项卡,您在VM中生成了一些线程来监视GC资源并为VisualVM提供成为那些Shiny图表的指标。而且该监控可能会分配一些自己的资源来完成它的工作。

java - 如何为 GradleWorkerMain 设置 JVM 选项?

当我设置GRADLE_OPTS或JAVA_OPTS时,这些是在我运行./gradlewbuild时为GradleWrapperMain设置的为我的项目。但我也需要为GradleWorkerMain设置它们。我该怎么做?这是在Bamboo中运行该Gradle作业时的pslist。GradleWorkerMain中缺少我的JAVA_OPTS(例如-Dcool.opt=1)。53854?Sl2:13/home/apps/jdk7/bin/java-Dorg.gradle.daemon=false-Dcool.opt=1-Xms1g-Xmx8g-XX:PermSize=256m-XX:MaxP

java - 什么设置JVM参数MaxNewSize的值?人体工程学?

我的服务器信息:中央处理器:英特尔至强E5-2630内存:65970676K操作系统:Centos6.4内核:3.8.0jdk:热点JDK1.6.0.27我使用jmap-heappid打印堆信息:HeapConfiguration:MinHeapFreeRatio=40MaxHeapFreeRatio=70MaxHeapSize=21474836480(20480.0MB)NewSize=21757952(20.75MB)MaxNewSize=174456832OldSize=65404928(62.375MB)NewRatio=7SurvivorRatio=8PermSize=268

java - jvm字符串池intern中有多少个字符串

我正在分析一个应用程序,使用intern输入字符串确实很有帮助。我想要找到的是用于对象池的好数字,因此我不会有性能损失。我怎么知道有多少字符串被插入了实习生池?我正在运行一些生产跟踪,我无法真正计算输入。JVM是否为此提供了一个API? 最佳答案 从JDK7开始,您可以使用-XX:+PrintStringTableStatisticsJVM标志来打印有关字符串表大小的信息,例如桶的数量和桶的大小。您还可以通过调用命令jmap-heap*process_id*来使用jmap工具,该命令将在末尾显示驻留的字符串数和总大小(还需要JDK7

java - 为什么在 JVM 中 Integer 存储为 byte 和 short?

这是一段代码publicclassClassifier{publicstaticvoidmain(String[]args){Integerx=-127;//thisusesbipushIntegery=127;//thisusebipushIntegerz=-129;//thisusesipushIntegerp=32767;//maximumrangeofshortstillsipushIntegera=128;//usesipushIntegerb=129786;//invokesvirtualmethodtogetIntegerclass}}这是部分字节码stack=1,loc

java - 我可以启动一个 Eden 空间如此之大的 JVM,它运行到完成而没有任何 GC。假设我有一堆空闲内存

如果我有足够的空闲内存,我可以启动一个Java应用程序(说mMven)来单独使用Eden空间运行直到完成而不需要任何GC吗? 最佳答案 是的,我已经为Java6+中的实际应用程序完成了此操作。我从一个24GB的Eden空间、微型幸存者空间和永久空间开始。后来发现8GB绰绰有余。当有bug或错误时它仍然会GC,但在正常操作下不会。我相信选项是-Xmn24g-Xmx26g-XX:SurvivorRatio=100使用默认GC。该应用程序经过优化,生成的数据量低于1GB/小时,因此使用GC运行一天。