我尝试了logback,但它创造了一吨垃圾。 有没有人听说过一个很好的实时Java?
@BernIE:我做了一个logging1Mcaching消息的循环,GC疯了。
'optimize'属性指令被忽略
大型项目启动缓慢
小文件大容量存储策略
优化 – 从windows磁盘读取文件
在调整PHP图像大小时,服务器负载会增加
你可以看看由Coral Blocks设计的CoralLog (与我有联系),它产生零垃圾,当记录一个64字节的消息时,平均等待时间为53纳秒。 就吞吐量而言,它可以记录每秒260万个带有时间戳的 64字节消息和每秒350万个没有时间戳的 64个字节消息。 完整的基准测试结果可以在这里看到。
如果您将邮件大小减少到16个字节,则可以每秒记录520万条邮件,而不需要时间戳记。
以下是一个简单的吞吐量测试:
package com.coralblocks.corallog.bench; import java.io.file; import java.nio.ByteBuffer; import com.coralblocks.corallog.AsyncThread; import com.coralblocks.corallog.Log; import com.coralblocks.corallog.Logger; public class PerformanceTest4 { public static voID main(String[] args) throws Exception { int batchSize = Integer.parseInt(args[0]); int passes = Integer.parseInt(args[1]); int msgSize = Integer.parseInt(args[2]); byte[] msgBytes = new byte[msgSize]; // build a dummy message: for(int i = 0; i < msgBytes.length; i++) { msgBytes[i] = (byte) String.valueOf(i % 10).charat(0); } ByteBuffer bb = ByteBuffer.wrap(msgBytes); Log.setIncludetopheader(false); String dir = "."; String filename = "throughput.log"; Logger logger; boolean isMmap = System.getProperty("logMemoryMappedfile","true").equals("true"); if (isMmap) { logger = Log.createMemoryMappedLogger(dir,filename,null /* no timestamps */,false /* not synchronized */,true /* asynchronousous */); } else { logger = Log.createLogger(dir,null,false,true); } int count = 0; while(count < passes) { long start = System.nanoTime(); for(int i = 0; i < batchSize; i++) { bb.position(0); logger.log(bb); } long time = System.nanoTime() - start; double seconds = (((double) time) / 1000000000L); System.out.println("Batch " + (count + 1) + " took: " + seconds + " s"); count++; } logger.drainCloseAnDWait(); boolean deletefile = System.getProperty("deletefile","true").equals("true"); if (deletefile) { file f = new file(dir,filename); f.delete(); } AsyncThread.drainAndDIE(); // just so the vm will exit... (async thread is not daemon) } }
我有一个库,可以在一秒钟内记录文本或二进制数据,而不会产生垃圾或系统调用。
https://github.com/peter-lawrey/Java-Chronicle
日志还可以通过任意数量的读取过程实时读取,为您提供持久的队列,每秒可以处理超过500万条消息。
Javolution提供日志功能。
从LogContext javadoc:
相同的代码可以使用系统out / err,标准日志记录(java.util.logging),Log4J甚至Osgi日志服务来运行。 可以通过configuration在运行时进行选择)。
(' configuration '是指Javolution类)。
尝试log4j系统: http : //logging.apache.org/log4j/1.2/
总结以上是内存溢出为你收集整理的什么是实时系统的良好日志logging库(快速且不创build对象)?全部内容,希望文章能够帮你解决什么是实时系统的良好日志logging库(快速且不创build对象)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)