JAVA
郭兴旺
这个作者很懒,什么都没留下…
展开
-
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规定的转载 2016-07-11 08:35:15 · 408 阅读 · 0 评论 -
Tomcat内存设置详解
Java内存溢出详解一、常见的Java内存溢出有以下三种: java.lang.OutOfMemoryError: Java heap space —-JVM Heap(堆)溢出 JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不可超过物理内存。 可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap的大小是原创 2016-08-10 11:25:53 · 267 阅读 · 0 评论 -
java中三种常见内存溢出错误的处理方法
相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap原创 2016-08-02 16:13:07 · 323 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。 n原创 2016-08-02 16:01:25 · 213 阅读 · 0 评论 -
Java IO最详解
初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见。 首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!) 这是java io 比较基本的一些处理流,除此之外我们还会提到一些比转载 2016-07-31 17:42:41 · 221 阅读 · 0 评论 -
Java引用类型
判断实例是否符合垃圾收集的条件都依赖于它的引用类型。原创 2016-07-28 08:52:50 · 378 阅读 · 0 评论 -
GC是如何判断一个对象为"垃圾"的?被GC判断为"垃圾"的对象一定会被回收吗?
一.GC如何判断一个对象为”垃圾”的 java堆内存中存放着几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。那么GC具体通过什么手段来判断一个对象已经”死去”的? 1.引用计数算法(已被淘汰的算法) 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为转载 2016-07-28 08:51:11 · 265 阅读 · 0 评论 -
Java内存模型及GC原理
一个优秀Java程序员,必须了解Java内存模型、GC工作原理,以及如何优化GC的性能、与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率,才能提高整个应用程序的性能。 本文将从JVM内存模型、GC工作原理,以及GC的几个关键问题进行探讨,从GC角度提高Java程序的性能。 一、Java内存模型 按照官方转载 2016-07-28 08:19:35 · 244 阅读 · 0 评论 -
Class.forName VS ClassLoader.loadClass
Class.forName ClassLoader.loadClass原创 2016-07-28 08:12:42 · 368 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。 在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。 ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable转载 2016-07-11 12:29:20 · 213 阅读 · 0 评论 -
六张图|教开发者该如何应对“中年危机”
第一步:源码分析看看大牛是如何写代码的,提升技术审美,提升核心竞争力。(重点)第二步:工程化工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具,提升开发效率和团队协作效率,让自己有更多的时间来思考。第三步:分布式从深度到广度的完善自己的知识体系,准备迎接高并发大数据的挑战第四步:微服务绕微服务的通用模式,学习spring Cloud的常见用法及原理,让微服务的开发更加方便 快捷,...转载 2018-07-11 22:56:37 · 171 阅读 · 0 评论