

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Go to start of metadataGC 垃圾回收,当你内存溢出时,使用回收垃圾时,你的对象真正使用你如何处理,(这个他说我搭的不对)JVM 装载 class 文件的机制内存溢出问题对 JVM 有多少的了解,如果出现内存溢出的时候,我要怎么办(申请虚拟内存)? 你在项目中用反射了吗?反射是怎么实现的?堆与栈的区别?垃圾回收(gc)干什么的?内存溢出是什么?classload 怎么加载 classclass.for name 的好处类的加载过程,顺序内存溢出怎么解决Java 代码里怎么提高系统性能.heap 和 stack 有什么区别。GC 是什么?为什么要有 GC?怎么加大 JDK
2、的虚拟内存classLoader 以及实现机制还有反射的原理什么放在堆里什么放在栈里GC 哪么实现的,堆与栈的区别。堆与栈有什么区别?new 出来的对象是放在堆里还是栈里?问:堆和栈有什么区别堆和栈有什么区别有什么答:堆是存放对象的,但是对象内的临时变量是存在栈内存中,如例子中的methodVar是在运行期存放到栈中的。 栈是跟随线程的,有线程就有栈,堆是跟随JVM的,有JVM就有堆内存。问:堆内存中到底存在着什么东西?堆内存中到底存在着什么东西? 答:对象,包括对象变量以及对象方法。问:类变量和实例变量有什么区别?类变量和实例变量有什么区别?有什么区别 答:静态变量是类变量,非静态变量是实例
3、变量,直白的说,有static修饰的变量是静态变量,没有static修饰的变量是实例变量。静态变量存在方法区中,实例变量存在堆内存中。启动时就初始化好的,和你这说的不同呀!问:我听说类变量是在JVM启动时就初始化好的,和你这说的不同呀! 答:那你是道听途说,信我的,没错。的方法(函数)到底是传值还是传址值还是传址?问:Java的方法(函数)到底是传值还是传址?答:都不是,是以传值的方式传递地址,具体的说原生数据类型传递的值,引用 类型传递的地址。对于原始数据类型,JVM的处理方法是从Method Area或Heap中拷贝到Stack,然后运行frame中的方法,运行完毕后再把变量指拷贝回去。产
4、生?问:为什么会产生OutOfMemory产生?答:一句话:Heap内存中没有足够的可用内存了。这句话要好好理解,不是说Heap没有内存了,是说新申请内存的对象大于Heap空闲内存,比如现在Heap还空闲1M, 但是新申请的内存需要1.1M,于是就会报OutOfMemory了,可能以后的对象申请的内存都只要0.9M,于是就只出现一次OutOfMemory,GC也正常了,看起来像偶发事件,就是这么回事。但如果此时GC没有回收就会产生挂起情况,系统不响应了。问:我产生的对象不多呀,为什么还会产生OutOfMemory?我产生的对象不多呀,?答:你继承层次忒多了,Heap中 产生的对象是先产生 父类
5、,然后才产生子类, 明白不?错误分几种?问:OutOfMemory错误分几种?答:分两种,分别是 “OutOfMemoryError:java heap size” 和”OutOfMemoryError:PermGenspace”,两种都是内存溢出,heap size是说申请不到新的内存了,这个很常 见,检查应用或调整堆内存大小。“PermGen spaed是因为永久存储区满了, 这个也很常见, 一般在热发布的环 境中出现,是因为每次发布应用系统都不重启,久而久之永久存储区中的死对象太多导致新对 象无法申请内存,一般重新启动一下即可。问:为什么会产生StackOverflowError? ?答
6、:因为一个线程把Stack内存全部耗尽了,一般是递归函数造成的之间可以互访吗?问:一个机器上可以看多个JVM吗?JVM之间可以互访吗?答:可以多个JVM,只要机器承受得了。JVM之间是不可以互访,你不能在A-JVM中访问B-JVM的Heap内存,这是不可能的。在以前老版本的JVM中,会出现A-JVMCrack后影响到B-JVM,现在版本非常少见。要采用垃圾回收机制,的显式问: 为什么Java要采用垃圾回收机制, 而不采用C/C+的显式内存管理?的显 内存管理?答:为了简单,内存管理不是每个程序员都能折腾好的。问:为什么你没有详细介绍垃圾回收机制?为什么你没有详细介绍垃圾回收机制 答:垃圾回收机
7、制每个JVM都不同,JVM Specification只是定义了要自动释放内存,也就是说它只定义了垃圾回收的抽象方法,具体怎么实现各个厂商都不同,算法各异, 这东西实在没必要深入。中到底哪些区域是共享的?哪些是私有的?问:JVM中到底哪些区域是共享的?哪些是私有的? 答:Heap和Method Area是共享的,其他都是私有的,问:什么是JIT,你怎么没说?,你怎么没说?答:JIT是指Just In Time,有的文档把JIT作为JVM的一个部件来介绍, 有的是作为执行引擎的一部分来介绍,这都能理解。Java刚诞生的时候是一个解释性语言, 别嘘, 即使编译成了字节码(byte code)也是针
8、对JVM的,它需要再次翻译成原生代码(native code)才能被机器执行,于是效率的担忧就提出来了。Sun为了解决该问题提出了一套新的机制,好,你想编译成原生代码,没问题,我在JVM上提供一个工具,把字节码编译成原生码,下次你来访问的 时候直接访问原生码就成了,于是JIT就诞生了,就这么回事。还有哪些部分是你没有提到的?问:JVM还有哪些部分是你没有提到的?答:JVM是一个异常复杂的东西,写一本砖头书都不为过,还有几个要说明的: 常量池(constant pool)按照顺序存放程序中的常量, : 并且进行索引编号的区 域。 比如int i =100,这个100就放在常量池中。安全管理器(Security Manager):提供Java运行期的安全控制,防止恶意攻 击,比如指定读取文件,写入文件权限,网络访问,创建进程等等,Class Loader在SecurityMan ager认证通过后才能加载class文件的。方法索引表(Methods table),记录的是每个method的地址信息,Stack和Heap中的地址指针其实是指向Methods table地址。问:为什么不建议在程序中显式的生命System.gc()? ?答: 因为显式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区电气系统设计与施工策略
- 工业大数据在制造业中的应用
- 工业安全与防护技术的发展
- 工业污染源的环境监测与管理
- 工业废水处理厂的环境监控技术
- 工业污染控制与环境保护技术
- 工业生产中的事故分析与预防
- 工业绿色改造的途径与策略
- 工业自动化与智能制造的探讨
- 工业设计与智能制造技术
- 2023学年完整公开课版喷药机操作
- GB/T 6185.1-20162型全金属六角锁紧螺母
- GB/T 30114.1-2013空间科学及其应用术语第1部分:基础通用
- GB 19288-2003打火机生产安全规程
- FZ/T 63012-2009涤纶长丝高强缝纫线
- 第十三章-航空发动机燃烧室课件
- 处方与处方书写规范
- 配电网工程施工工艺规范课件
- 工厂过程检验记录表(自检)模板
- 工程创优质量承诺和保证措施(投标技术部分)
- 年循环再生20万吨高值化改性塑料智能制造项目环境影响报告书
评论
0/150
提交评论