当通过Java命令启动Java进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC是JVM内部的一个进程,回收无效对象的内存用于将来的分配。
下面有几条可以遵循的方法重载的最佳实践来避免造成自动装箱的混乱。a)不要重载这样的方法:一个方法接收int参数,而另个方法接收Integer参数。b)不要重载参数数量一致,而只是参数顺序不同的方法。c)如果重载的方法参数个数多于5个,采用可变参数。
有很多的最佳实践,你可以根据你的喜好来例举。下面是一些更通用的原则:a)使用批量的操作来插入和更新数据b)使用PreparedStatement来避免SQL异常,并提高性能。c)使用数据库连接池d)通过列名来获取结果集,不要使用列的下标来获取。
IO对Java应用的性能非常重要。理想情况下,你不应该在你应用的关键路径上避免IO操作。下面是一些你应该遵循的JavaIO最佳实践:a)使用有缓冲区的IO类,而不要单独读取字节或字符。b)使用NIO和NIO2c)在finally块中关闭流,或者使用try-with-resource(Java7)语句。d)使用内...
这是我在使用Java中Collectionc类的一些最佳实践:a)使用正确的集合类,例如,如果不需要同步列表,使用ArrayList而不是Vector。b)优先使用并发集合,而不是对集合进行同步。并发集合提供更好的可扩展性。c)使用接口代表和访问集合,如使用List存储ArrayList,使用Map存储Hash...
这是我在写Java并发程序的时候遵循的一些最佳实践:a)给线程命名,这样可以帮助调试。b)最小化同步的范围,而不是将整个方法同步,只对关键部分做同步。c)如果可以,更偏向于使用volatile而不是synchronized。d)使用更高层次的并发工具,而不是使用wait()和notify()来实现线程间通信,如...
interrupted()和isInterrupted()的主要区别是前者会将中断状态清除而后者不会。Java多线程的中断机制是用内部标识来实现的,调用Thread.interrupt()来中断一个线程就会设置中断标识为true。当中断线程调用静态方法Thread.interrupted()来检查中断状态时,中...
在Java并发程序中FutureTask表示一个可以取消的异步运算。它有启动和取消运算、查询运算是否完成和取回运算结果等方法。只有当运算完成的时候结果才能取回,如果运算尚未完成get方法将会阻塞。一个FutureTask对象可以对调用了Callable和Runnable的对象进行包装,由于FutureTask也...
ThreadLocal是Java里一种特殊的变量。每个线程都有一个ThreadLocal就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。它是为创建代价高昂的对象获取线程安全的好方法,比如你可以用ThreadLocal让SimpleDateFormat变成线程安全的,因为那个类创建代价高昂且每次调用...
Java内存模型规定和指引Java程序在不同的内存架构、CPU和操作系统间有确定性地行为。它在多线程的情况下尤其重要。Java内存模型对一个线程所做的变动能被其它线程可见提供了保证,它们之间是先行发生关系。这个关系定义了一些规则让程序员在并发编程时思路更清晰。比如,先行发生关系确保了:线程内的代码能够按先后顺序...