我的问题是我应该如何从堆中释放内存?
"我的c盘有超过40gb的空间,但现在显示不到3gb "C:Windowssystem32>java -XX:+PrintFlagsFinal -version | findstr/i "HeapSize PermSize ThreadStackSize"
intx CompilerThreadStackSize = 0
{pd product}
uintx ErgoHeapSizeLimit = 0
{product}
uintx HeapSizePerGCThread = 87241520
{product}
uintx InitialHeapSize := 62914560
{product}
uintx LargePageHeapSizeThreshold = 134217728
{product}
uintx MaxHeapSize := 987758592
{product}
intx ThreadStackSize = 0
{pd product}
intx VMThreadStackSize = 0
{pd product}
java version "1.8.0_77"Java(TM) SE运行环境(build 1.8.0_77-b03)Java HotSpot(TM) 64位Server VM (build 25.77-b03, mixed mode)
C: Windows system32系统>java -XX:+PrintFlagsFinal -Xms512m -Xmx1024m -Xss512k -XX:PermSize=64m -XX:MaxPermSize=128m -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
当在堆中分配内存后,我使用jmeter每次在c驱动器中分配空间时运行程序。 @Peter Lawrey
当您的磁盘空间填满时,您需要找到您不需要的文件并清理它们。
如果您已经生成了堆转储,我建议您在程序运行的目录中查找一个大文件。
当程序退出时,它所使用的所有资源都被释放,除了它留下的任何文件。
使用TreeSize Free工具并使用Administrator打开它并搜索java_。hprofs文件从那里,去目录和删除这些文件从那里!!