Java基础
文章平均质量分 85
xiangbole
和小伙伴们一起努力
展开
-
JVM指令手册概述
栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将int类型常量5压入栈lconst_0 将long类型常量0压入栈lconst_1 将long类型常量1压原创 2022-01-24 17:52:33 · 1441 阅读 · 0 评论 -
jvm类加载机制探讨
一、类加载流程jvm中类加载流程分为5个部分:加载loading,验证Verification,准备preparation,解析resolution,初始化initialization。1、加载阶段,这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对象, 作为方法区这个类的各种数据的入口。可从class文件、Zip报(jar\war等)、运行时计算生成(动态代理)、JSP转换成的对应class文件等。主要完成三件事:1)通过一个类的全限定名来获取定义此类的二进制字节流;2)原创 2020-07-13 16:22:27 · 1520 阅读 · 0 评论 -
ThreadPoolExecutor 的八种拒绝策略
前言谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当池...原创 2019-09-16 16:17:31 · 2483 阅读 · 1 评论 -
java中的锁探讨
〇、synchronized与LockJava中有两种加锁的方式:一种是用synchronized关键字,另一种是用Lock接口的实现类。形象地说,synchronized关键字是自动档,可以满足一切日常驾驶需求。但是如果你想要玩漂移或者各种骚操作,就需要手动档了——各种Lock的实现类。所以如果你只是想要简单的加个锁,对性能也没什么特别的要求,用synchronized关键字就...转载 2019-09-10 09:53:36 · 1568 阅读 · 0 评论 -
ThreadPoolExecutor机制 及使用探讨
ThreadPoolExecutor机制 一、概述1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务;2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。3、先来了解其线程池管理的机制,有助于正确使用,避免错误使用导致严重故障。转载 2017-12-21 09:47:26 · 1622 阅读 · 0 评论 -
Java多线程原理及使用探讨
摘要: Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但转载 2017-12-15 11:52:32 · 1653 阅读 · 0 评论 -
关于内存溢出的原因分析及解决方案探讨
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。 引起内存溢出的原因有很多种,常见的有以下几种: 1.内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2.集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3.代码中存在死循环或循环产生过多重复的对象实体; 4.使用的第三方软件中的BUG; 5.启动转载 2017-12-01 09:36:37 · 17675 阅读 · 0 评论 -
声明式事务管理和基于@Transactional注解的使用
事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性。spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。转载 2017-10-26 17:40:32 · 1725 阅读 · 0 评论 -
Java对象不再使用的时候为什么要设置为null
前言许多Java开发者都曾听说过“不使用的对象应手动赋值为null“这句话,而且好多开发者一直信奉着这句话;问其原因,大都是回答“有利于GC更早回收内存,减少内存占用”,但再往深入问就回答不出来了。鉴于网上有太多关于此问题的误导,本文将通过实例,深入JVM剖析“对象不再使用时赋值为null”这一操作存在的意义,供君参考。本文尽量不使用专业术语,但仍需要你对JVM有一些概念。示例代码我们来看...转载 2020-03-20 11:27:53 · 2156 阅读 · 0 评论