关于面试题java内存泄漏想到的(1)

再次被问到java内存泄漏的问题,前些天明明在网上看过答案的,编程思想也看了垃圾回收机制,今天仍然是没有表达出自己想要表达的。自己安静下来,仔细想一想,还是总结不到位。现在决定仔细总结一下java内存管理机制。

目标:

1、总结经典java书籍中阐述的java内存管理机制;

2、学会设置jvm内存配置;

3、写出内存泄漏的例子;

4、至少学会使用一种内存泄漏检测工具

一、java经典书籍内存管理

1、java经典书籍:

51CTO上面推荐的书籍:

http://developer.51cto.com/art/200906/129320.htm

1)Java LanguageSpecification, Third Edition (by James Gosling) (JAVA语言说明,注:原文翻译为java编程规范,但是第十本书是是sun官方的文档,直译成java编程规范,为了区别,此处翻译成java说明)

本书由Java技术的发明者编写,是Java TM编程语言的权威性技术指南。如果你想知道语言之构造的精确含义,本书是最好的资源。 

 2EffectiveJava , Second Edition (by Joshua Bloch) JAVA经验集,注:我觉得比直译为有效/高效的java更好)

本书介绍了在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案。通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰、健壮和高效的代码。.  本书中的每条规则都以简短、独立的小文章形式出现,并通过例子代码加以进一步说明。本书内容全面,结构清晰,讲解详细。可作为技术人员的参考用书。

3) Java Concurrency in Practice (by BrianGoetz)JAVA并发编程实践)

随着多核处理器的普及,使用并发成为构建高性能应用程序的关键。Java 5以及6在开发并发程序取得了显著的进步,提高了Java虚拟机的性能,提高了并发类的可伸缩性,并加入了丰富的新并发构建块。在本书中,这些便利工具的创造者不仅解释了它们究竟如何工作、如何使用,同时,还阐释了创造它们的原因,及其背后的设计模式。本书既能够成为读者的理论支持,又可以作为构建可靠的,可伸缩的,可维护的并发程序的技术支持。本书并不仅仅提供并发API的清单及其机制,本书还提供了设计原则,模式和思想模型,使我们能够更好地构建正确的,性能良好的并发程序。  本书的读者是那些具有一定Java编程经验的程序员、希望了解Java SE 56在线程技术上的改进和新特性的程序员,以及Java和并发编程的爱好者。

4Java Puzzles:Traps, Pitfalls and Corner Cases (by Joshua Bloch)JAVA解惑)

Java教父的又一经典名著-JavaPuzzlersAmazon五星图书。认为你到底有多了解Java?你是一个代码神探吗?你是否曾经花费过数天时间去追踪一个由Java或其类库的陷阱和缺陷而导致的bug?你喜欢智力测验吗?那么这本书正好适合你! 

5) Thinking inJava (by Bruce Eckel)JAVA编程思想)

本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在BruceEckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对CC++以及Java语言都有独到、深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概念。本书共22章,包括操作符、控制执行流程、访问权限控制、复用类、多态、接口、通过异常处理错误、字符串、泛型、数组、容器深入研究、Java I/O系统、枚举类型、并发以及图形化用户界面等内容。这些丰富的内容,包含了Java语言基础语法以及高级特性,适合各个层次的Java程序员阅读,同时也是高等院校讲授面向对象程序设计语言以及Java语言的绝佳教材和参考书。

6) Better,faster, lighter Java (by Justin Gehtland, Bruce A. Tate) (轻快的java

Java的开发者正深陷于复杂性的泥沼中而无法自拔。我们的经验和能力正接近极限,程序员为了编写支持所选框架的程序所花的时间比解决真正问题的时间要多得多。我们不禁要问,有必要把Java搞得这么复杂吗?.   答案是否定的。本书给你指引了一条出路。无论是维护应用程序,还是从头开始设计,你都能够超越成规,并大幅精简基本框架、开发过程和最终代码。你能重新掌握一度失控的J2EE应用程序。..   在本书中,原作者Bruce ATateJustinGehtland将循序渐进、娓娓道来。首先,他们列出了五项基本法则。他们展示了如何构建简单、解耦的代码,并告诉你如何选择技术。他们还对两种被广泛运用的开源程序如何迎合这些概念进行了剖析。最后,作者还将利用这些基本概念构建一个简单但内涵丰富的应用程序来解决现实世界中所遇到的问题。

7) Core Java(vol. 1, 2) (by Cay S. Horstmann, Gary Cornell) JAVA核心技术)

Java核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了部分内容,以便适应Java的最新特性。本版也不例外,它反映了Java SE 6的新特性。全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、泛型程序设计、集合以及多线程等内容。  全书对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例,从而帮助读者充分理解Java语言以及Java类库的相关特性。

8 The JavaVirtual Machine Specification (by Tim Linholm, Frank Yellin)   Java虚拟机规范)

如果你需要了解Java虚拟机的byte code,或者是一些编译方面的东西,这本书绝对让你得偿所愿。其不但包含了机器码的规范说明,同时它也是Java编译器和运行环境的规格说明书。

9Robust Java:Exception Handling, Testing, and Debugging (by Stephen Stelting)   JAVA异常处理测试以及调试)

处理异常涉及开发、设计和体系结构等方面的知识。本书共分3个部分。
第Ⅰ部分介绍Java异常的产生机理和用法,介绍一些最佳实践,讲述各类异常处理使用的一般API和技术。
第Ⅱ部分阐述可测试性设计,介绍故障模式分析,讨论常见API的异常及起因,分析J2EE体系结构和分布式API的异常模式。
第Ⅲ部分讨论在软件开发周期执行异常和错误处理,分析软件体系结构、设计模式、测试和调试,列举成熟的设计模式,介绍处理策略对系统体系结构的影响,讲述如何构建健壮系统。

10Java CodeConvention   (java编程规范)
最后一本当然是Java编码规范,这是由Sun公司官方出品的。这也是每个程序员为了得供程序的易读性,可维护性需要知道的。

看到这里,心虚了,反问自己一句,我是java工程师吗?我应聘的岗位是java高级工程师,可是从Cjava已经四年了,我看过多少java经典书籍,工作中需要的时候,我就查资料,查资料的途径不过是百度,谷歌,然后就是Think inJavacore Java,虽然解决了很多实际的问题,但是更多的是偏向于业务,完成功能点,但是真的离自己刚出来的技术架构师的道路是渐行渐远,技术真的丢了?真的丢了。部门经理给的评价是我善于沟通,善于带团队。的确,只能用之前朋友的一句话来说,能喝酒,善交际,技术丢了,怎么丢的呢?

省略2670字,与技术无关,个人工作生活感想。

项目结束,旅行,等年终奖,看看工资卡里面,辛苦一年的攒钱,终于到些自己能够生存的钱了。 ( 这个不得不说,男人不攒钱真的不行,必须得有理财观念,是从跟上个女朋友分手之后,才有理财观念的 ) 辞职,想去百度面试,但是自我知道,技术不过关,没敢去,想突破自己,不想过出差的生活了。多年的梦想,考研。炎热的夏天,浮躁的心,校园一群群的美女,自满,浮躁。哪里能静下心,还好,还是坚持到了 9 月份。十一去三亚深圳,说实话,真的不该去,不然现在应该还在努力考研中,做事情最宜一鼓作气。然后十月份照顾亲戚。十一月份出去玩,自以为工作应该很容易找到。的确,有这么工作经验,项目实施方面的工作对于我来说轻而易举,并且善于沟通,只要善于沟通,这方面的工作还是有很多的。某证券软件开发公司,小公司面试,网上的面试题,不当回事,心态不好,然后是做金融系统软件一家公司,规模蛮大,实力比不上我之前的公司,心态不好,副总面试的我,然后我又不愿意出差。然后心态比较好的是一家不知名的外企,但是技术不过关,真的不过关,网上下载了一份面试题,粗略看了一遍,觉得差不多了。去百度质量部面试,先是上海,一个 C 技术大牛面试我 java 工作,当然是考算法架构之类的,当然面试没过。热心的百度 HR 大哥帮我联系质量部北京部门,面试,现在才知道,自己的技术真的是不过关的,首先,心态不好,总以为自己四年工作经验,做过那么多项目,解决问题的实际能力也很强,公司会抢着要。的确,出差实施,做二次开发的工作大把大把的 , 这工作不是我想要的。但是我技术真的不过关,四年工作经验了,再应聘就连我要应聘的 java 研发工程师,具体需要达到哪个层次都不知道。但是实际上呢,应聘 java 工程师, java 方面的技术书籍,只知道 core Java Think in java 还没有完全看完。想一想自己的需求,工作需求,还要这么短浅的目光吗?

第一,不要去电信行业这样的出差公司出差了,出差的话,就等于把自己完全卖给公司了;第二,最好去银行或者证券的甲方,活轻松,不影响家庭生活;第三,去技术牛逼的公司,做新技术方向的研发,终有一天成为创一代。

百度是这个部门面试不过,还可以到另外一个部门面试,当时真该试一试,那样或许能不那么自满,然后专心的看书,弥补自己的不足。

说了这么多,无非是一个问题,第一,工作不能影响生活;第二,工作要有规划;


猜你喜欢

转载自blog.csdn.net/jifeijixufly/article/details/17509557