用JProfiler测试项目的性能,发现GC大概每40秒就运行一次,不知道是好是坏!在网上搜索并和朋友讨论:
HeyFamily168(158865140) 16:51:20
垃圾回收由虚拟机自己的机制进行调度,不同的jdk实现的算法不同。程序无法控制它什么时候进行回收,只能建议。进行垃圾回收一般在系统资源比较空闲的时候。
江城月(345622936) 16:52:58
这个跟CPU空闲什么关系
HeyFamily168(158865140) 16:55:31
如果你的CPU一直运行在100%的时候,它忙自己的活都没有资源,那有空闲帮你回收垃圾,
江城月(345622936) 16:56:10
你这个是极端的假设
江城月(345622936) 16:56:23
再说当你new的时候不需要cpu吗?
广州---三寿<qxpidt@163.com> 16:56:25
我觉得有道理!
江城月(345622936) 16:56:54
哪个有道理
广州---三寿<qxpidt@163.com> 16:58:22
168的有道理!
江城月(345622936) 16:59:02
刚找到一个解释,感觉很不错
江城月(345622936) 16:59:13
经验之谈:
1.Server端JVM最好将-Xms和-Xmx设为相同值。为了优化GC,最好让-Xmn值约等于-Xmx的1/3[2]。
2.一个GUI程序最好是每10到20秒间运行一次GC,每次在半秒之内完成[2]。 HeyFamily168(158865140) 16:59:13
这个结论是是搞笑点。
不过确定是存在因为系统繁忙而导致无法回收的情况。
HeyFamily168(158865140) 16:59:27
其实我不知道你那个测试,想问什么问题
江城月(345622936) 16:59:39
10到20秒运行一次GC
江城月(345622936) 17:00:14
原因是这个 江城月(345622936) 17:00:16
注意:
1.增加Heap的大小虽然会降低GC的频率,但也增加了每次GC的时间。并且GC运行时,所有的用户线程将暂停,也就是GC期间,Java应用程序不做任何工作。
江城月(345622936) 17:00:49
GC运行时,所有的用户线程将暂停
要是暂停时间太久,那看着像什么,呵呵
HeyFamily168(158865140) 17:03:53
要是游戏引擎的话,给它停这么一停,按你说的还要10~~20s停一下,就算是0.x~1s之间,你就会知道痛苦。呵呵。。。
江城月(345622936) 17:04:18
对的
好学份子<twt46955662@tom.com> 17:04:35
听你们谈这些,长学问哪
江城月(345622936) 17:04:47
所以说我的40秒来一次GC,应该还好
江城月(345622936) 17:05:05
毕竟现在的硬件什么的也不错
分享到:
相关推荐
Java的口号“Write once, run anywhere”(一次编写,到处运行)体现了其跨平台的特性,这得益于Java虚拟机的存在。JVM作为一个抽象层,使得Java程序可以在任何支持JVM的操作系统上运行,无需重新编译。 Java语言的...
它负责执行字节码,提供跨平台的兼容性,是Java能够"一次编译,到处运行"的关键所在。 内存区域:JVM的内存区域包括程序计数器、虚拟机栈、本地方法栈、堆和方法区。每个线程有其私有的程序计数器、虚拟机栈和本地...
Garbage Collection技术在Java中已经比较成熟,但是在C++领域的发展并不顺畅,虽然很早就有人思考在C++中也加入GC的支持。 2.3.1 内存泄漏的定义 一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中...
1:一次性的设置 (cmd里面设置) set PATH=C:\Program Files\Java\jdk1.6.0_45\bin set PATH = [错误的 等号两边不能加空格] set PATH [找到所有以PATH开头的环境变量的值] set [找到所有的环境变量的值] //...
本文假定你具备一切学习此语言所需的知识,没有也不要紧,我会在文中尽量列出相关的link,鉴于互联网瞬息万变的特点,若某一链接不可用,请自行至Google查询。 如前所述,我是一个狮子座男人,一度我认为学习Java会...
Java是一种跨平台、面向对象的编程语言,由Sun Microsystems(现为Oracle Corporation)开发,具有“一次编写,到处运行”的特性。 2. **Java的基本数据类型有哪些?** Java有8种基本数据类型:整型(byte, short...
静态注解(如@Controller)在项目启动时被一次性扫描,用于创建如Service这样的单例对象,减少了运行时的代理和反射开销。然而,动态注解(如@ResponseBody)则在每次请求时都会进行反射操作,虽然减少了代码量,但...
4.1 创建版本库及第一次提交/ 58 4.2 思考:为什么工作区根目录下有一个 .git 目录/ 60 4.3 思考:git config 命令的各参数有何区别/ 63 4.4 思考:是谁完成的提交/ 65 4.5 思考:随意设置提交者姓名,是否太不安全/...
垃圾回收机制是.NET运行时自动管理内存的一部分,对于提高程序的性能至关重要。 **1.1.1 避免不必要的对象创建** 在C#中,不必要的对象创建会增加垃圾回收的压力,从而影响应用程序的整体性能。以下是一些避免对象...
`malloc`用于在运行时为程序分配指定大小的内存空间,而`free`用于归还这些内存,防止内存泄漏。 内存溢出(Memory Overflow)是指程序在申请内存时,无法找到足够的内存空间,而导致程序崩溃。内存泄露(Memory ...
在IT行业中,Java是一种广泛应用的高级编程语言,以其“一次编写,到处运行”的特性而闻名。这个名为"_justThinkIt_"的压缩包文件可能包含了与Java编程相关的学习资源或项目代码,旨在帮助开发者深入理解和实践Java...
- **SAX解析**(Simple API for XML)是一种轻量级的解析方式,优点在于不需要一次性加载整个XML文档到内存,减少了资源消耗。选项B正确,描述了SAX解析器的优点。 9. **自定义Style**: - 自定义Style的正确格式...