java
滨滨小工匠
这个作者很懒,什么都没留下…
展开
-
Java内存分配和String类型的深度解析
一、引题在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析关于String的许多令人迷惑的问题。下面是本文将要涉及到的一些问题,如果读者对这些问题都了如指掌,则可忽略此文。1、java内存具体指哪块内存?这块内存区域为什么要进行划分?是如何划分的?划分之后每块区域的作用是什么?如何设置各个区域的大小?2、S转载 2015-04-07 08:05:50 · 587 阅读 · 0 评论 -
Java 内存泄露的理解与解决过程
本文详细地介绍了Java内存管理的原理,以及内存泄露产生的原因,同时提供了一些列解决Java内存泄露的方案,希望对各位Java开发者有所帮助。Java内存管理机制在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。 Java 语言对内存管理做了转载 2015-06-19 09:14:56 · 430 阅读 · 0 评论 -
关于Java性能的9个谬论
Java的性能有某种黑魔法之称。部分原因在于Java平台非常复杂,很多情况下问题难以定位。然而在历史上还有一种趋势,人们靠智慧和经验来研究Java性能,而不是靠应用统计和实证推理。在这篇文章中,我希望拆穿一些最荒谬的技术神话。1.Java很慢关于Java的性能有很多谬论,这一条是最过时的,可能也是最为明显的。确实,在上世纪90年代和本世纪初处,Java有时是很慢。然而从那以后,虚拟机和JIT技术已经转载 2015-06-19 09:47:22 · 375 阅读 · 0 评论 -
一张图读懂Java多线程
1、带着疑问看图1)竞争对象的锁和竞争CPU资源以及竞争被唤醒2)何种情况下获取到了锁,何种情况下会释放锁 2、还是那张图 一张图读懂多Java线程 3、详细图解1)Thread t = new Thread(),初始化一个线程,实际上就是一个普通对象,此时他的状态为New2)t.start(); 线程处于就绪状态(可运行状态),也就是随时等待着运行, 不要小看这个start,这个star转载 2015-09-14 08:55:23 · 442 阅读 · 0 评论 -
一个性能较好的JVM参数配置
一个性能较好的web服务器jvm参数配置:-server //服务器模式 -Xmx2g //JVM最大允许分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JVM重新分配内存。 -Xmn256m //年轻代内存大小,整个JVM内存=年轻代 + 年老代 + 持久代 -XX:PermSize=128m //持久代内存大小 -Xss256k转载 2015-09-14 08:58:33 · 1323 阅读 · 0 评论 -
Java 自定义实现 LRU 缓存算法
背景LinkedHashMap继承自HashMap,内部提供了一个removeEldestEntry方法,该方法正是实现LRU策略的关键所在,且HashMap内部专门为LinkedHashMap提供了3个专用回调方法,afterNodeAccess、afterNodeInsertion、afterNodeRemoval,这3个方法的字面意思非常容易理解,就是节点访问后、节点插入后、节点删除后分别执行转载 2015-09-14 09:00:35 · 960 阅读 · 0 评论