如何能让JVM能够立即执行GC?面试的时候被问到。。。JVM不能保证GC能够立即执行吧

RT,如何能让JVM能够立即执行GC?面试的时候被问到。。。JVM不能保证GC能够立即执行吧

0

3个回答

你说的是对的,除非能hack jvm

1
devmiao
见了你女王大人喵姐还不跪下 回复staryyy2011: 面试官一般都是菜鸟
3 年多之前 回复
staryyy2011
staryyy2011 面试官说有办法,真是醉了。。。走的时候忘记问他了
3 年多之前 回复

JVM提供给开发者调用GC的方法是System.gc();这个方法调用不能保证GC能够被立即执行。
但是如果当堆空间不足时,会立即触发GC执行的。如果是简单的测试或者GC研究学习,可以通过设置GC相关的参数,创造GC条件。
参考:http://blog.csdn.net/wojiushiwo945you/article/details/42029691

0
staryyy2011
staryyy2011 3Q~
3 年多之前 回复

断开对象的所有引用,执行System.gc();

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
调用System.gc没有立即执行的解决方法
查看源码当我们调用System.gc()的时候,其实并不会马上进行垃圾回收,甚至不一定会执行垃圾回收,查看系统源码可以看到 /** * Indicates to the VM that it would be a good time to run the * garbage collector. Note that this is a hint only. There i
关于JVM内存模型与GC回收的面试问答
     最近参加面试被问到了这个经久不衰的问题。回答后自觉不是那么详细,所以在这里整理一次,虽然这个知识点网上已经太多太详细了,所以这边简单总结一下在面试中如何简短并准确的回答给你的面试官。JVM中包含    1.方法区        方法区中存放已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等。堆的逻辑部分,线程共享,长期 存在。-XX:PermSize -XX:MaxPer...
JVM面试---GC是在什么时候,对什么东西,做了什么事情?
这个帖子的背景是今晚看到je上这张贴:http://www.iteye.com/topic/715256,心血来潮写下的文字,如果能抛砖引玉,能有其他面试官分析一下自己面试时问的问题,那或许是件很有意义的事情。      在公司当技术面试官几年间,从应届生到工作十几年的应聘者都遇到过。先表达一下我自己对面试的观点:      1.笔试、面试去评价一个人肯定是不够准确的,了解一个人最准确的方式就是“...
JVM 触发Full gc条件
本文参考:http://blog.csdn.net/chenleixing/article/details/46706039  给出各个场景下可能触发full gc的实例代码. 1.调用System.gc import java.util.ArrayList; import java.util.List; /** * * created by: gaoxingliang@outl
Java 虚拟机面试题
如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存? 不会,在下一个垃圾回收周期中,这个对象将是可被回收的。 也就是说当一个对象的引用变为 null 时,并不会被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存。 finalize()方法工作原理 一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其 finalize() 方法(如果如果覆盖了finali...
JVM中GC什么时候开始进行
GC 经常发生的区域是堆区,堆区还可以细分为新生代、老年代,新生代还分为一个 Eden 区和两个 Survivor 区。对象优先在 Eden 中分配,当 Eden 中没有足够空间时,虚拟机将发生一次 Minor GC,因为 Java 大多数对象都是朝生夕灭,所以 Minor GC 非常频繁,而且速度也很快;Full GC,发生在老年代的 GC,当老年代没有足够的空间时即发生 Full GC,发生 ...
Java直接内存分配和释放方式
一. 正常分配,回收由GC负责添加jvm启动参数:-verbose:gc -XX:+PrintGCDetails -XX:MaxDirectMemorySize=40M 循环执行以下代码,可以看到频繁fullGC.ByteBuffer buffer = ByteBuffer.allocateDirect(10 * 1024 * 1024); 当然我也找到一种不需要GC回收由程序员自己回收的方式,不推
JVM面试题总结
1. 介绍下Java内存区域(运行时数据区) JVM在执行Java程序的过程中会把它管理的内存分为若干个不同的区域,这些组成部分有些是线程私有的,有些则是线程共享的: 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 方法区 堆 直接内存 1. 程序计数器 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。 程序计数器是唯一一个不会出现O...
7.GC概念、收集方法
GC概念、收集方法有关垃圾收集器的常见问题及解答JVM面试总结Java面试题--JVM 底层 与 GC(Garbage Collection)1.GC是什么?为什么要有GC2.什么时候会导致垃圾回收3.GC是怎么样运行的4.新老以及永久区是什么5.GC 有几种方式?怎么配置6.什么时候一个对象会被GC? 如何判断一个对象是否存活7.System.gc() Runtime.gc()会做什么事情? 能...
JVM中类加载过程,里面执行的哪些操作?GC和内存管理是什么
java堆(JavaHeap)1.用来存放对象的,几乎所有对象都放在这里,被线程共享的,或者说是被栈共享的2.堆又可以分为新生代和老年代,实际还有一个区域叫永久代,但是jdk1.7已经去永久代了,所以可以当作没有,永久代是当jvm启动时就存放的JDK自身的类和接口数据,关闭则释放。新生代可以分为Eden区和两个幸存区,这么设计是为了更好地利用内存  之前的设计是只分为两部分一样一半  后来发现这样...
JVM(十四)GC的触发时间
堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆
[jvm][面试] jvm full gc 的触发情况以及解决办法
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示: 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor
JVM GC之一找出不可达对象并回收
JAVA运行时各个数据区域的苞丁解牛,JAVA对象的生死判定,JVM内存的清理,JAVA对象迁徙
JVM内存管理及GC机制
一、概述Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。经过这么长时间的发展,Java GC机制已经日臻完善,几乎可以自动的为我们做绝大多数的事情。虽然java不需要开发人员显示的分配和回收内存,这对开发人员确实降
JVM发生GC时,什么样的对象会被回收?
这个问题,我们可以从另一个角度看。什么样的对象不会被回收? 援引《深入理解java虚拟机》中的一段叙述。 关于对象不会被回收,业界一共有两种说法? 1 .引用计数算法 2 .对象可达性算法 下面分别说明: 引用计数法的意思是,给对象添加一个引用计数器,每当有一个地方引用它时,计数器就加1,当引用失效时就减1,当对象的引用计数器等于0时,就代表对象需要被回收了。这种算法判断对象是否应该被回收时的效率...
Java经典面试题(其三)——JVM原理和调优
Java经典面试题(其三)——JVM原理和调优一、什么是JVM  JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。  Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译
JAVA面试题之JVM(GC)
1、Java字节码文件的格式? 一个字节码文件由6部份组成 (1)第一部分General Information,这一部份中说明了JDK使用的版本号Major version=51表示使用的是JDK 7,Minor version=0表示的是次版本号,这也限制了运行此字节码文件需要的最低JDK版本号,不信你可以试试下面这条语句,其实就是从字节码文件中获取到class的版本号 System.o
JVM面试--full gc太过频繁该如何处理
监控工具:jvisualVM、VisaulVM、jprofiler JVM优化书籍:《Java性能优化权威指南》、《深入理解java虚拟机》 1.年轻代空间不足 2.per Gen(永久代)空间满 3.CMS GC时出现promotion failed和concurrent mode failure 4.统计得到的Minor GC晋升到旧生代的平均大小大于旧生代的剩余空间等   结论: F...
JVM 菜鸟进阶高手之路六(JVM每隔一小时执行一次Full GC)
上次分析详细地址在:http://blog.csdn.net/lirenzuo/article/details/76257526 以为结束了上次那个知识才想rmi问题,其实本次问题不是该问题但是也会有sys.gc fullgc问题。 查看GC统计汇总情况: jstat -gcutil pid  3s 30 参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题
面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
面试题目: 地球人都知道,Java有个东西叫垃圾收集器,它让创建的对象不需要像c/cpp那样delete、free掉,你能不能谈谈,GC是在什么时候,对什么东西,做了什么事情?一.回答:什么时候?1.系统空闲的时候。分析:这种回答大约占30%,遇到的话一般我就会准备转向别的话题,譬如算法、譬如SSH看看能否发掘一些他擅长的其他方面。 2.系统自身决定,不可预测的时间/调用System.gc()的时
jvm:Minor GC与Full GC分别在什么时候发生?
首先区分一下Minor GC和Full GC: Minor GC是新生代GC,指的是发生在新生代的垃圾收集动作。由于java对象大都是朝生夕死的,所以Minor GC非常频繁,一般回收速度也比较快。 Major GC/Full GC 是老年代GC,指的是发生在老年代的GC,出现Major GC一般经常会伴有Minor GC,Major GC的速度比Minor GC慢的多。   触发Min...
去阿里面试前的准备:JVM(内存,类加载,GC)
目前主流的 Java 虚拟机有哪些? HotSpot VM HotSpot VM是绝对的主流。大家用它的时候很可能就没想过还有别的选择,或者是为了迁就依赖了Oracle/Sun JDK某些具体实现的烂代码而选择用HotSpot VM省点心。 J9 VM J9是IBM开发的一个高度模块化的JVM。 JVM内存 JAVA虚拟机在执行JAVA程序过程中会把他管理的内存划分为若干个不同...
JVM中GC的停顿现象
GC停顿现象 GC任务是识别和回收垃圾对象,进行内存清理 为了让GC可以高效的执行,在进行GC时,系统会进入一个停顿的状态 停顿目的 终止所有应用线程 只有这样,系统才不会有新的垃圾产生 停顿保证了系统状态 在某一瞬间的一致性,有益于更好的标记垃圾对象 因此,在GC时,都会产生应用程序的停顿 减少GC 可以减少程序的停顿,提高系统的性能...
什么时候执行full gc
JVM是Java Virtual Machine(Java虚拟机)的缩写。 要理解jvm的原理,首先必须理解jvm的堆(heap),栈(stack)以及方法区。 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 栈区
JVM什么时候会触发Full GC
在JVM中,垃圾回收用到了generational collection(分代收集),
什么时候触发GC
首先需要知道,GC又分为 minor GC 和 Full GC (也称为 Major GC )。Java 堆内存分为新生代和老年代,新生代中又分为1个 Eden 区域 和两个 Survivor 区域。那么对于 Minor GC 的触发条件:大多数情况下,直接在 Eden 区中进行分配。如果 Eden区域没有足够的空间,那么就会发起一次 Minor GC;对于 Full GC
查看jvm gc情况
早上收到运维保障,apache进程数过高,达到100多个,远远高于其他几台的httpd进程。经过查看,发现存在大量400状态的访问,以为是这个问题,经过研究排除。向同事求助,同事得出结论,应用启动以后,内存迅速被吃光。tomcat响应较慢,从而导致了apache进程数的升高。然后迅速查看应用中的问题,解决。 同事给了个查看jvm gc的工具,以前还没怎么用过,看来还是经验不足,呵...
JVM、GC详解及调优
JVM、GC详解及调优 JVM、GC详解及调优 JVM、GC详解及调优 文档、实践
JVM(3)对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制
①首先说一下,GC里边在JVM当中是使用的ROOT算法,ROOT算法,什么称作为ROOT呢,就是说类的静态成员,静态成员就是static修饰的那种,是“根”的一个,根还包括方法中的成员变量,只有成员或对象不挂在根上,GC的时候就可能把他们搞掉,这里提到的循环引用,就看这个循环引用是否挂在根上,如果挂在根上,如果这个根还被JVM的Java代码所执行的话,就不会GC掉,如果说这个根已经被释放掉了,这个
JVM GC与频繁GC
1.JVM GC的内存管理 2.频繁 GC 的原因
查看JVM的GC日志
Java GC类型 Java中的GC有哪几种类型?   参数 描述 UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后, 使用Serial+Serial Old收集器组合进行垃圾收集。 UseParNewGC 打开此开关参数后,使用ParNew...
jvm系列之-gc日志查看
在上一篇中我们介绍的有参数的设置,那我们要了解不同的参数对于程序的影响和对于调优的影响,这个时候我们就需要查看gc日志来看我们设置的参数是否合理,这一章节中我们就来查看gc日志 一、新生代和老年代的比值对性能的影响 Map map = new HashMap<>(); for (int i = 0; i < 10; i++) { ...
Java 线程调用start()后会立即执行run()方法吗?
别想当然 问题 Java 线程调用start()后会立即执行run()方法吗? 我们在开发中,经常和线程打交道,有些东西总是司空见惯,想当然地认为某些事情理所当然... 但是今天偶然发现一个有趣的现象: class Test { public static void main(String[] args) { Sys...
JVM原理和机制 GC调优
前言Java的JVM,可能学Java的都知道这个名字,博客或者百度也有一大堆,因为面试原因,大致也能说得上一些东西,今天重新梳理一下,一方面复习,一方面加深理解JVM的原理JVM可以理解成一个虚构出来的计算机,一个特点是跨平台型,将源码编译成目标代码,这个目标代码就是字节码(也就是Java里面的*.class文件),在任何平台上,windows、linux、类unix、tru64等机器上,只要安装对
JVM - GC日志格式及分析
1. 与日志收集相关的JVM参数 -Xms :初始堆大小 -Xmx :最大堆大小 -XX:NewSize=n :设置年轻代大小  -XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4  -XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,...
JVM的内存区域划分(面试问题:你了解java内存模型么)
JVM的内存区域划分   学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢?   由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:
JVM堆GC回收次数
GC回收次数 减少GC次数,可以提高性能 一般,可以设置初始内存,等于最大分配内存 当非常空间不足的时候,会进行GC回收 当内存空间充足的时候,可以减少GC回收次数 package com.bjsxt.base001; public class Test02 { public static void main(String[] args) { byte[...
JVM gc打印日志字段说明
在jvm 执行参数里面加入:-verbose:gc -XX:+PrintGCDetails,就可以显示jvm的gc信息 minor gc字段说明 full gc字段说明 串行收集器: DefNew:是使用-XX:+UseSerialGC(新生代,老年代都使用串行回收收集器)。 并行收集器: ParNew:是使用-XX:+UseParNewGC(新
Java中单例对象不会被GC回收
hotspot虚拟机的垃圾收集算法使用根搜索算法。这个算法的基本思路是:对任何“活”的对象,一定能最终追溯到其存活在堆栈或静态存储区之中的引用。通过一系列名为根(GC Roots)的引用作为起点,从这些根开始搜索,经过一系列的路径,如果可以到达java堆中的对象,那么这个对象就是“活”的,是不可回收的。可以作为根的对象有: 虚拟机栈(栈桢中的本地变量表)中的引用的对象。 方法区中的类静态属性引用的对
性能案例-JVM频繁full GC 问题(JVM参数优化)
说明:这个是两三年前的一个案例,刚刚新开发的服务,jdk版本为1.71、问题描述:某服务线程十几分钟就出现一次full GC现象,需要优化(其他4个服务也存在类似问题)2、问题原因:jvm 永久带未配置(默认值过小)3、测试过程:以xx_core_service-1.0.0.jar线程为例,运行过程中出现full GC现象,需要优化4、优化建议调整JVM参数。当前情况,已以xxx_core_ser...
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java的jvm如何学习 gc 如何学习java