Merge branch 'tryingoutmirror'
This commit is contained in:
commit
3329e127d9
628
hs_err_pid28135.log
Normal file
628
hs_err_pid28135.log
Normal file
@ -0,0 +1,628 @@
|
||||
#
|
||||
# There is insufficient memory for the Java Runtime Environment to continue.
|
||||
# Native memory allocation (mmap) failed to map 214958080 bytes for committing reserved memory.
|
||||
# Possible reasons:
|
||||
# The system is out of physical RAM or swap space
|
||||
# In 32 bit mode, the process size limit was hit
|
||||
# Possible solutions:
|
||||
# Reduce memory load on the system
|
||||
# Increase physical memory or swap space
|
||||
# Check if swap backing store is full
|
||||
# Use 64 bit Java on a 64 bit OS
|
||||
# Decrease Java heap size (-Xmx/-Xms)
|
||||
# Decrease number of Java threads
|
||||
# Decrease Java thread stack sizes (-Xss)
|
||||
# Set larger code cache with -XX:ReservedCodeCacheSize=
|
||||
# This output file may be truncated or incomplete.
|
||||
#
|
||||
# Out of Memory Error (os_linux.cpp:2640), pid=28135, tid=0x00007f36d482c700
|
||||
#
|
||||
# JRE version: Java(TM) SE Runtime Environment (8.0_171-b11) (build 1.8.0_171-b11)
|
||||
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.171-b11 mixed mode linux-amd64 compressed oops)
|
||||
# Core dump written. Default location: /home/joachim/Documents/workspaces/idea/crubecross/core or core.28135
|
||||
#
|
||||
|
||||
--------------- T H R E A D ---------------
|
||||
|
||||
Current thread (0x00007f36d0141000): VMThread [stack: 0x00007f36d472d000,0x00007f36d482d000] [id=28147]
|
||||
|
||||
Stack: [0x00007f36d472d000,0x00007f36d482d000], sp=0x00007f36d482b1c0, free space=1016k
|
||||
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
|
||||
V [libjvm.so+0xacfffa] VMError::report_and_die()+0x2ba
|
||||
V [libjvm.so+0x5005cb] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0x8b
|
||||
V [libjvm.so+0x92dd93] os::Linux::commit_memory_impl(char*, unsigned long, bool)+0x123
|
||||
V [libjvm.so+0x92dfb9] os::pd_commit_memory(char*, unsigned long, unsigned long, bool)+0x29
|
||||
V [libjvm.so+0x92527a] os::commit_memory(char*, unsigned long, unsigned long, bool)+0x2a
|
||||
V [libjvm.so+0x99b223] PSVirtualSpace::expand_by(unsigned long)+0x53
|
||||
V [libjvm.so+0x98bae0] PSOldGen::expand(unsigned long)+0x170
|
||||
V [libjvm.so+0x98bceb] PSOldGen::resize(unsigned long)+0x1cb
|
||||
V [libjvm.so+0x9939f1] PSParallelCompact::invoke_no_policy(bool)+0x991
|
||||
V [libjvm.so+0x99934d] PSScavenge::invoke()+0x1ad
|
||||
V [libjvm.so+0x94fcb0] ParallelScavengeHeap::failed_mem_allocate(unsigned long)+0x70
|
||||
V [libjvm.so+0xad1a77] VM_ParallelGCFailedAllocation::doit()+0x97
|
||||
V [libjvm.so+0xad9595] VM_Operation::evaluate()+0x55
|
||||
V [libjvm.so+0xad795a] VMThread::evaluate_operation(VM_Operation*)+0xba
|
||||
V [libjvm.so+0xad7cde] VMThread::loop()+0x1ce
|
||||
V [libjvm.so+0xad8150] VMThread::run()+0x70
|
||||
V [libjvm.so+0x92e0f8] java_start(Thread*)+0x108
|
||||
|
||||
VM_Operation (0x00007f36d7dc3e90): ParallelGCFailedAllocation, mode: safepoint, requested by thread 0x00007f36d000c800
|
||||
|
||||
|
||||
--------------- P R O C E S S ---------------
|
||||
|
||||
Java Threads: ( => current thread )
|
||||
0x00007f36d0223800 JavaThread "Service Thread" daemon [_thread_blocked, id=28164, stack(0x00007f36bcb94000,0x00007f36bcc95000)]
|
||||
0x00007f36d021e800 JavaThread "C1 CompilerThread2" daemon [_thread_blocked, id=28163, stack(0x00007f36bcc96000,0x00007f36bcd96000)]
|
||||
0x00007f36d021c800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=28162, stack(0x00007f36bcfae000,0x00007f36bd0ae000)]
|
||||
0x00007f36d021a800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=28161, stack(0x00007f36bd0af000,0x00007f36bd1af000)]
|
||||
0x00007f36d0219000 JavaThread "Monitor Ctrl-Break" daemon [_thread_in_native, id=28160, stack(0x00007f36bd1af000,0x00007f36bd2b0000)]
|
||||
0x00007f36d0180800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=28152, stack(0x00007f36d4144000,0x00007f36d4245000)]
|
||||
0x00007f36d014d000 JavaThread "Finalizer" daemon [_thread_blocked, id=28151, stack(0x00007f36d452a000,0x00007f36d462b000)]
|
||||
0x00007f36d0148800 JavaThread "Reference Handler" daemon [_thread_blocked, id=28150, stack(0x00007f36d462b000,0x00007f36d472c000)]
|
||||
0x00007f36d000c800 JavaThread "main" [_thread_blocked, id=28137, stack(0x00007f36d7cc6000,0x00007f36d7dc6000)]
|
||||
|
||||
Other Threads:
|
||||
=>0x00007f36d0141000 VMThread [stack: 0x00007f36d472d000,0x00007f36d482d000] [id=28147]
|
||||
0x00007f36d0228800 WatcherThread [stack: 0x00007f36bca94000,0x00007f36bcb94000] [id=28165]
|
||||
|
||||
VM state:at safepoint (normal execution)
|
||||
|
||||
VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event])
|
||||
[0x00007f36d0005a70] ExpandHeap_lock - owner thread: 0x00007f36d0141000
|
||||
[0x00007f36d0009a00] Threads_lock - owner thread: 0x00007f36d0141000
|
||||
[0x00007f36d0009f00] Heap_lock - owner thread: 0x00007f36d000c800
|
||||
|
||||
Heap:
|
||||
PSYoungGen total 437248K, used 47533K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 356352K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000ece00000)
|
||||
from space 80896K, 58% used [0x00000000fb100000,0x00000000fdf6b610,0x0000000100000000)
|
||||
to space 156672K, 0% used [0x00000000ece00000,0x00000000ece00000,0x00000000f6700000)
|
||||
ParOldGen total 323584K, used 323479K [0x0000000085600000, 0x0000000099200000, 0x00000000d7200000)
|
||||
object space 323584K, 99% used [0x0000000085600000,0x00000000991e5db8,0x0000000099200000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
|
||||
Card table byte_map: [0x00007f36d6cc4000,0x00007f36d709a000] byte_map_base: 0x00007f36d6899000
|
||||
|
||||
Marking Bits: (ParMarkBitMap*) 0x00007f36d8f1b280
|
||||
Begin Bits: [0x00007f36bd2b0000, 0x00007f36bf158000)
|
||||
End Bits: [0x00007f36bf158000, 0x00007f36c1000000)
|
||||
|
||||
Polling page: 0x00007f36d937f000
|
||||
|
||||
CodeCache: size=245760Kb used=1983Kb max_used=1983Kb free=243776Kb
|
||||
bounds [0x00007f36c1000000, 0x00007f36c1270000, 0x00007f36d0000000]
|
||||
total_blobs=555 nmethods=281 adapters=189
|
||||
compilation: enabled
|
||||
|
||||
Compilation events (10 events):
|
||||
Event: 1.810 Thread 0x00007f36d021c800 277 4 java.util.HashMap::hash (20 bytes)
|
||||
Event: 1.811 Thread 0x00007f36d021e800 278 % 3 be.nielandt.CrossSolverBase::solveCrosses @ 67 (229 bytes)
|
||||
Event: 1.811 Thread 0x00007f36d021c800 nmethod 277 0x00007f36c11c7a10 code [0x00007f36c11c7b60, 0x00007f36c11c7c18]
|
||||
Event: 1.815 Thread 0x00007f36d021e800 nmethod 278% 0x00007f36c11e6310 code [0x00007f36c11e6780, 0x00007f36c11e9398]
|
||||
Event: 1.818 Thread 0x00007f36d021a800 279 4 java.util.HashMap::containsKey (18 bytes)
|
||||
Event: 1.824 Thread 0x00007f36d021a800 nmethod 279 0x00007f36c11df050 code [0x00007f36c11df1e0, 0x00007f36c11df648]
|
||||
Event: 1.835 Thread 0x00007f36d021a800 280 % 4 be.nielandt.CrossSolverBase::solveCrosses @ 105 (229 bytes)
|
||||
Event: 1.950 Thread 0x00007f36d021a800 nmethod 280% 0x00007f36c11edb10 code [0x00007f36c11eddc0, 0x00007f36c11eef90]
|
||||
Event: 2.280 Thread 0x00007f36d021e800 281 3 be.nielandt.counter.CounterTiered::appendRandomClass (581 bytes)
|
||||
Event: 2.286 Thread 0x00007f36d021e800 nmethod 281 0x00007f36c11f0450 code [0x00007f36c11f0b80, 0x00007f36c11f57c8]
|
||||
|
||||
GC Heap History (10 events):
|
||||
Event: 3.776 GC heap after
|
||||
Heap after GC invocations=12 (full 1):
|
||||
PSYoungGen total 648704K, used 0K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 627712K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000fd700000)
|
||||
from space 20992K, 0% used [0x00000000fd700000,0x00000000fd700000,0x00000000feb80000)
|
||||
to space 20992K, 0% used [0x00000000feb80000,0x00000000feb80000,0x0000000100000000)
|
||||
ParOldGen total 151552K, used 69687K [0x0000000085600000, 0x000000008ea00000, 0x00000000d7200000)
|
||||
object space 151552K, 45% used [0x0000000085600000,0x0000000089a0dd40,0x000000008ea00000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
}
|
||||
Event: 4.295 GC heap before
|
||||
{Heap before GC invocations=13 (full 1):
|
||||
PSYoungGen total 648704K, used 627712K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 627712K, 100% used [0x00000000d7200000,0x00000000fd700000,0x00000000fd700000)
|
||||
from space 20992K, 0% used [0x00000000fd700000,0x00000000fd700000,0x00000000feb80000)
|
||||
to space 20992K, 0% used [0x00000000feb80000,0x00000000feb80000,0x0000000100000000)
|
||||
ParOldGen total 151552K, used 69687K [0x0000000085600000, 0x000000008ea00000, 0x00000000d7200000)
|
||||
object space 151552K, 45% used [0x0000000085600000,0x0000000089a0dd40,0x000000008ea00000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
Event: 4.607 GC heap after
|
||||
Heap after GC invocations=13 (full 1):
|
||||
PSYoungGen total 528896K, used 20990K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 507904K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000f6200000)
|
||||
from space 20992K, 99% used [0x00000000feb80000,0x00000000fffff8a8,0x0000000100000000)
|
||||
to space 80896K, 0% used [0x00000000f6200000,0x00000000f6200000,0x00000000fb100000)
|
||||
ParOldGen total 175104K, used 174316K [0x0000000085600000, 0x0000000090100000, 0x00000000d7200000)
|
||||
object space 175104K, 99% used [0x0000000085600000,0x000000009003b030,0x0000000090100000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
}
|
||||
Event: 4.607 GC heap before
|
||||
{Heap before GC invocations=14 (full 2):
|
||||
PSYoungGen total 528896K, used 20990K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 507904K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000f6200000)
|
||||
from space 20992K, 99% used [0x00000000feb80000,0x00000000fffff8a8,0x0000000100000000)
|
||||
to space 80896K, 0% used [0x00000000f6200000,0x00000000f6200000,0x00000000fb100000)
|
||||
ParOldGen total 175104K, used 174316K [0x0000000085600000, 0x0000000090100000, 0x00000000d7200000)
|
||||
object space 175104K, 99% used [0x0000000085600000,0x000000009003b030,0x0000000090100000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
Event: 5.584 GC heap after
|
||||
Heap after GC invocations=14 (full 2):
|
||||
PSYoungGen total 528896K, used 12779K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 507904K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000f6200000)
|
||||
from space 20992K, 60% used [0x00000000feb80000,0x00000000ff7fada8,0x0000000100000000)
|
||||
to space 80896K, 0% used [0x00000000f6200000,0x00000000f6200000,0x00000000fb100000)
|
||||
ParOldGen total 323584K, used 174870K [0x0000000085600000, 0x0000000099200000, 0x00000000d7200000)
|
||||
object space 323584K, 54% used [0x0000000085600000,0x00000000900c5b60,0x0000000099200000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
}
|
||||
Event: 5.853 GC heap before
|
||||
{Heap before GC invocations=15 (full 2):
|
||||
PSYoungGen total 528896K, used 520683K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 507904K, 100% used [0x00000000d7200000,0x00000000f6200000,0x00000000f6200000)
|
||||
from space 20992K, 60% used [0x00000000feb80000,0x00000000ff7fada8,0x0000000100000000)
|
||||
to space 80896K, 0% used [0x00000000f6200000,0x00000000f6200000,0x00000000fb100000)
|
||||
ParOldGen total 323584K, used 174870K [0x0000000085600000, 0x0000000099200000, 0x00000000d7200000)
|
||||
object space 323584K, 54% used [0x0000000085600000,0x00000000900c5b60,0x0000000099200000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
Event: 6.111 GC heap after
|
||||
Heap after GC invocations=15 (full 2):
|
||||
PSYoungGen total 588800K, used 80895K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 507904K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000f6200000)
|
||||
from space 80896K, 99% used [0x00000000f6200000,0x00000000fb0fff30,0x00000000fb100000)
|
||||
to space 80896K, 0% used [0x00000000fb100000,0x00000000fb100000,0x0000000100000000)
|
||||
ParOldGen total 323584K, used 225678K [0x0000000085600000, 0x0000000099200000, 0x00000000d7200000)
|
||||
object space 323584K, 69% used [0x0000000085600000,0x0000000093263b60,0x0000000099200000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
}
|
||||
Event: 6.374 GC heap before
|
||||
{Heap before GC invocations=16 (full 2):
|
||||
PSYoungGen total 588800K, used 588799K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 507904K, 100% used [0x00000000d7200000,0x00000000f6200000,0x00000000f6200000)
|
||||
from space 80896K, 99% used [0x00000000f6200000,0x00000000fb0fff30,0x00000000fb100000)
|
||||
to space 80896K, 0% used [0x00000000fb100000,0x00000000fb100000,0x0000000100000000)
|
||||
ParOldGen total 323584K, used 225678K [0x0000000085600000, 0x0000000099200000, 0x00000000d7200000)
|
||||
object space 323584K, 69% used [0x0000000085600000,0x0000000093263b60,0x0000000099200000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
Event: 6.624 GC heap after
|
||||
Heap after GC invocations=16 (full 2):
|
||||
PSYoungGen total 437248K, used 80883K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 356352K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000ece00000)
|
||||
from space 80896K, 99% used [0x00000000fb100000,0x00000000ffffcd18,0x0000000100000000)
|
||||
to space 156672K, 0% used [0x00000000ece00000,0x00000000ece00000,0x00000000f6700000)
|
||||
ParOldGen total 323584K, used 314855K [0x0000000085600000, 0x0000000099200000, 0x00000000d7200000)
|
||||
object space 323584K, 97% used [0x0000000085600000,0x0000000098979c28,0x0000000099200000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
}
|
||||
Event: 6.624 GC heap before
|
||||
{Heap before GC invocations=17 (full 3):
|
||||
PSYoungGen total 437248K, used 80883K [0x00000000d7200000, 0x0000000100000000, 0x0000000100000000)
|
||||
eden space 356352K, 0% used [0x00000000d7200000,0x00000000d7200000,0x00000000ece00000)
|
||||
from space 80896K, 99% used [0x00000000fb100000,0x00000000ffffcd18,0x0000000100000000)
|
||||
to space 156672K, 0% used [0x00000000ece00000,0x00000000ece00000,0x00000000f6700000)
|
||||
ParOldGen total 323584K, used 314855K [0x0000000085600000, 0x0000000099200000, 0x00000000d7200000)
|
||||
object space 323584K, 97% used [0x0000000085600000,0x0000000098979c28,0x0000000099200000)
|
||||
Metaspace used 4615K, capacity 5656K, committed 5888K, reserved 1056768K
|
||||
class space used 422K, capacity 456K, committed 512K, reserved 1048576K
|
||||
|
||||
Deoptimization events (10 events):
|
||||
Event: 0.449 Thread 0x00007f36d000c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f36c11903b0 method=be.nielandt.EdgeModel.crossSolved(I)Z @ 543
|
||||
Event: 0.683 Thread 0x00007f36d000c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f36c11c072c method=be.nielandt.counter.CounterTiered.fillIn(ILjava/util/List;[Ljava/lang/Integer;)Ljava/util/List; @ 538
|
||||
Event: 0.683 Thread 0x00007f36d000c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f36c11c072c method=be.nielandt.counter.CounterTiered.fillIn(ILjava/util/List;[Ljava/lang/Integer;)Ljava/util/List; @ 538
|
||||
Event: 0.683 Thread 0x00007f36d000c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f36c11c072c method=be.nielandt.counter.CounterTiered.fillIn(ILjava/util/List;[Ljava/lang/Integer;)Ljava/util/List; @ 538
|
||||
Event: 0.683 Thread 0x00007f36d000c800 Uncommon trap: reason=class_check action=maybe_recompile pc=0x00007f36c11c072c method=be.nielandt.counter.CounterTiered.fillIn(ILjava/util/List;[Ljava/lang/Integer;)Ljava/util/List; @ 538
|
||||
Event: 1.189 Thread 0x00007f36d000c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f36c1191548 method=be.nielandt.EdgeModel.crossSolved(I)Z @ 675
|
||||
Event: 1.604 Thread 0x00007f36d000c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f36c11ce858 method=be.nielandt.EdgeModel.crossSolved(I)Z @ 442
|
||||
Event: 1.792 Thread 0x00007f36d000c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f36c11b9110 method=be.nielandt.CrossSolverBase.solveCrosses(Lbe/nielandt/EdgeModel;)Ljava/util/Map; @ 154
|
||||
Event: 1.809 Thread 0x00007f36d000c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f36c118f954 method=java.util.HashMap.containsKey(Ljava/lang/Object;)Z @ 9
|
||||
Event: 1.810 Thread 0x00007f36d000c800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f36c11e0154 method=java.util.HashMap.containsKey(Ljava/lang/Object;)Z @ 9
|
||||
|
||||
Classes redefined (0 events):
|
||||
No events
|
||||
|
||||
Internal exceptions (2 events):
|
||||
Event: 0.047 Thread 0x00007f36d000c800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)Ljava/lang/Class; name or signature does not match> (0x00000000d7207cb0) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u171/10807/hotspot/src/sh
|
||||
Event: 0.047 Thread 0x00007f36d000c800 Exception <a 'java/lang/NoSuchMethodError': Method sun.misc.Unsafe.prefetchRead(Ljava/lang/Object;J)V name or signature does not match> (0x00000000d7207f98) thrown at [/HUDSON/workspace/8-2-build-linux-amd64/jdk8u171/10807/hotspot/src/share/vm/prims/jni.c
|
||||
|
||||
Events (10 events):
|
||||
Event: 2.192 Executing VM operation: ParallelGCFailedAllocation done
|
||||
Event: 2.621 Executing VM operation: ParallelGCFailedAllocation
|
||||
Event: 3.776 Executing VM operation: ParallelGCFailedAllocation done
|
||||
Event: 4.166 Executing VM operation: EnableBiasedLocking
|
||||
Event: 4.172 Executing VM operation: EnableBiasedLocking done
|
||||
Event: 4.295 Executing VM operation: ParallelGCFailedAllocation
|
||||
Event: 5.584 Executing VM operation: ParallelGCFailedAllocation done
|
||||
Event: 5.853 Executing VM operation: ParallelGCFailedAllocation
|
||||
Event: 6.111 Executing VM operation: ParallelGCFailedAllocation done
|
||||
Event: 6.374 Executing VM operation: ParallelGCFailedAllocation
|
||||
|
||||
|
||||
Dynamic libraries:
|
||||
00400000-00401000 r-xp 00000000 00:15 1373915 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/bin/java
|
||||
00600000-00601000 rw-p 00000000 00:15 1373915 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/bin/java
|
||||
01505000-01526000 rw-p 00000000 00:00 0 [heap]
|
||||
85600000-99200000 rw-p 00000000 00:00 0
|
||||
a5f00000-d7200000 ---p 00000000 00:00 0
|
||||
d7200000-100000000 rw-p 00000000 00:00 0
|
||||
100000000-100080000 rw-p 00000000 00:00 0
|
||||
100080000-140000000 ---p 00000000 00:00 0
|
||||
7f3680000000-7f3680021000 rw-p 00000000 00:00 0
|
||||
7f3680021000-7f3684000000 ---p 00000000 00:00 0
|
||||
7f3688000000-7f368827a000 rw-p 00000000 00:00 0
|
||||
7f368827a000-7f368c000000 ---p 00000000 00:00 0
|
||||
7f368c000000-7f368c021000 rw-p 00000000 00:00 0
|
||||
7f368c021000-7f3690000000 ---p 00000000 00:00 0
|
||||
7f3690000000-7f36908a7000 rw-p 00000000 00:00 0
|
||||
7f36908a7000-7f3694000000 ---p 00000000 00:00 0
|
||||
7f3694000000-7f36948e7000 rw-p 00000000 00:00 0
|
||||
7f36948e7000-7f3698000000 ---p 00000000 00:00 0
|
||||
7f3698000000-7f3698021000 rw-p 00000000 00:00 0
|
||||
7f3698021000-7f369c000000 ---p 00000000 00:00 0
|
||||
7f369c000000-7f369c04a000 rw-p 00000000 00:00 0
|
||||
7f369c04a000-7f36a0000000 ---p 00000000 00:00 0
|
||||
7f36a0000000-7f36a0021000 rw-p 00000000 00:00 0
|
||||
7f36a0021000-7f36a4000000 ---p 00000000 00:00 0
|
||||
7f36a4000000-7f36a4021000 rw-p 00000000 00:00 0
|
||||
7f36a4021000-7f36a8000000 ---p 00000000 00:00 0
|
||||
7f36a8000000-7f36a89d8000 rw-p 00000000 00:00 0
|
||||
7f36a89d8000-7f36ac000000 ---p 00000000 00:00 0
|
||||
7f36ac000000-7f36ac29a000 rw-p 00000000 00:00 0
|
||||
7f36ac29a000-7f36b0000000 ---p 00000000 00:00 0
|
||||
7f36b0000000-7f36b0021000 rw-p 00000000 00:00 0
|
||||
7f36b0021000-7f36b4000000 ---p 00000000 00:00 0
|
||||
7f36b4000000-7f36b4021000 rw-p 00000000 00:00 0
|
||||
7f36b4021000-7f36b8000000 ---p 00000000 00:00 0
|
||||
7f36b8000000-7f36b8021000 rw-p 00000000 00:00 0
|
||||
7f36b8021000-7f36bc000000 ---p 00000000 00:00 0
|
||||
7f36bca93000-7f36bca94000 ---p 00000000 00:00 0
|
||||
7f36bca94000-7f36bcb94000 rw-p 00000000 00:00 0
|
||||
7f36bcb94000-7f36bcb97000 ---p 00000000 00:00 0
|
||||
7f36bcb97000-7f36bcc95000 rw-p 00000000 00:00 0
|
||||
7f36bcc95000-7f36bcc96000 ---p 00000000 00:00 0
|
||||
7f36bcc96000-7f36bcc99000 ---p 00000000 00:00 0
|
||||
7f36bcc99000-7f36bcd96000 rw-p 00000000 00:00 0
|
||||
7f36bcd96000-7f36bcdac000 r-xp 00000000 00:15 1375668 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libnet.so
|
||||
7f36bcdac000-7f36bcfac000 ---p 00016000 00:15 1375668 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libnet.so
|
||||
7f36bcfac000-7f36bcfad000 rw-p 00016000 00:15 1375668 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libnet.so
|
||||
7f36bcfad000-7f36bcfae000 ---p 00000000 00:00 0
|
||||
7f36bcfae000-7f36bcfb1000 ---p 00000000 00:00 0
|
||||
7f36bcfb1000-7f36bd0ae000 rw-p 00000000 00:00 0
|
||||
7f36bd0ae000-7f36bd0af000 ---p 00000000 00:00 0
|
||||
7f36bd0af000-7f36bd0b2000 ---p 00000000 00:00 0
|
||||
7f36bd0b2000-7f36bd1af000 rw-p 00000000 00:00 0
|
||||
7f36bd1af000-7f36bd1b2000 ---p 00000000 00:00 0
|
||||
7f36bd1b2000-7f36c1000000 rw-p 00000000 00:00 0
|
||||
7f36c1000000-7f36c1270000 rwxp 00000000 00:00 0
|
||||
7f36c1270000-7f36d0000000 ---p 00000000 00:00 0
|
||||
7f36d0000000-7f36d054b000 rw-p 00000000 00:00 0
|
||||
7f36d054b000-7f36d4000000 ---p 00000000 00:00 0
|
||||
7f36d40df000-7f36d40e1000 r--s 0001a000 00:15 323413 /opt/intellij-idea-ultimate-edition/lib/idea_rt.jar
|
||||
7f36d40e1000-7f36d40e3000 r--s 00003000 00:15 1717238 /home/joachim/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar
|
||||
7f36d40e3000-7f36d40e9000 r--s 00015000 00:15 2108645 /home/joachim/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.61/kotlin-stdlib-common-1.2.61.jar
|
||||
7f36d40e9000-7f36d40f9000 r--s 000db000 00:15 2108625 /home/joachim/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.2.61/kotlin-stdlib-1.2.61.jar
|
||||
7f36d40f9000-7f36d410c000 r--s 00345000 00:15 1375490 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/resources.jar
|
||||
7f36d410c000-7f36d411f000 r--s 000d6000 00:15 1375394 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/plugin.jar
|
||||
7f36d411f000-7f36d4124000 r--s 0009d000 00:15 1375509 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jsse.jar
|
||||
7f36d4124000-7f36d4129000 r--s 00084000 00:15 1375369 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jfr.jar
|
||||
7f36d4129000-7f36d4144000 r--s 0020c000 00:15 1375370 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/deploy.jar
|
||||
7f36d4144000-7f36d4147000 ---p 00000000 00:00 0
|
||||
7f36d4147000-7f36d4245000 rw-p 00000000 00:00 0
|
||||
7f36d4245000-7f36d452a000 r--p 00000000 00:15 2148554 /usr/lib/locale/locale-archive
|
||||
7f36d452a000-7f36d452d000 ---p 00000000 00:00 0
|
||||
7f36d452d000-7f36d462b000 rw-p 00000000 00:00 0
|
||||
7f36d462b000-7f36d462e000 ---p 00000000 00:00 0
|
||||
7f36d462e000-7f36d472c000 rw-p 00000000 00:00 0
|
||||
7f36d472c000-7f36d472d000 ---p 00000000 00:00 0
|
||||
7f36d472d000-7f36d578b000 rw-p 00000000 00:00 0
|
||||
7f36d578b000-7f36d5965000 r--s 03d68000 00:15 1375452 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/rt.jar
|
||||
7f36d5965000-7f36d5f76000 rw-p 00000000 00:00 0
|
||||
7f36d5f76000-7f36d6236000 ---p 00000000 00:00 0
|
||||
7f36d6236000-7f36d6632000 rw-p 00000000 00:00 0
|
||||
7f36d6632000-7f36d6633000 ---p 00000000 00:00 0
|
||||
7f36d6633000-7f36d6733000 rw-p 00000000 00:00 0
|
||||
7f36d6733000-7f36d6734000 ---p 00000000 00:00 0
|
||||
7f36d6734000-7f36d6834000 rw-p 00000000 00:00 0
|
||||
7f36d6834000-7f36d6835000 ---p 00000000 00:00 0
|
||||
7f36d6835000-7f36d6935000 rw-p 00000000 00:00 0
|
||||
7f36d6935000-7f36d6936000 ---p 00000000 00:00 0
|
||||
7f36d6936000-7f36d6ad4000 rw-p 00000000 00:00 0
|
||||
7f36d6ad4000-7f36d6cc4000 ---p 00000000 00:00 0
|
||||
7f36d6cc4000-7f36d6d62000 rw-p 00000000 00:00 0
|
||||
7f36d6d62000-7f36d6f52000 ---p 00000000 00:00 0
|
||||
7f36d6f52000-7f36d7099000 rw-p 00000000 00:00 0
|
||||
7f36d7099000-7f36d70a4000 rw-p 00000000 00:00 0
|
||||
7f36d70a4000-7f36d745a000 ---p 00000000 00:00 0
|
||||
7f36d745a000-7f36d7475000 r-xp 00000000 00:15 1375664 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libzip.so
|
||||
7f36d7475000-7f36d7675000 ---p 0001b000 00:15 1375664 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libzip.so
|
||||
7f36d7675000-7f36d7676000 rw-p 0001b000 00:15 1375664 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libzip.so
|
||||
7f36d7676000-7f36d7680000 r-xp 00000000 00:15 1375673 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libinstrument.so
|
||||
7f36d7680000-7f36d787f000 ---p 0000a000 00:15 1375673 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libinstrument.so
|
||||
7f36d787f000-7f36d7880000 rw-p 00009000 00:15 1375673 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libinstrument.so
|
||||
7f36d7880000-7f36d78ab000 r-xp 00000000 00:15 1375658 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libjava.so
|
||||
7f36d78ab000-7f36d7aaa000 ---p 0002b000 00:15 1375658 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libjava.so
|
||||
7f36d7aaa000-7f36d7aac000 rw-p 0002a000 00:15 1375658 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libjava.so
|
||||
7f36d7aac000-7f36d7ab9000 r-xp 00000000 00:15 1375663 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libverify.so
|
||||
7f36d7ab9000-7f36d7cb9000 ---p 0000d000 00:15 1375663 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libverify.so
|
||||
7f36d7cb9000-7f36d7cbb000 rw-p 0000d000 00:15 1375663 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/libverify.so
|
||||
7f36d7cbb000-7f36d7cbd000 r--p 00000000 00:15 2147897 /usr/lib/librt-2.28.so
|
||||
7f36d7cbd000-7f36d7cc1000 r-xp 00002000 00:15 2147897 /usr/lib/librt-2.28.so
|
||||
7f36d7cc1000-7f36d7cc3000 r--p 00006000 00:15 2147897 /usr/lib/librt-2.28.so
|
||||
7f36d7cc3000-7f36d7cc4000 r--p 00007000 00:15 2147897 /usr/lib/librt-2.28.so
|
||||
7f36d7cc4000-7f36d7cc5000 rw-p 00008000 00:15 2147897 /usr/lib/librt-2.28.so
|
||||
7f36d7cc5000-7f36d7cc6000 ---p 00000000 00:00 0
|
||||
7f36d7cc6000-7f36d7cc9000 ---p 00000000 00:00 0
|
||||
7f36d7cc9000-7f36d7dc6000 rw-p 00000000 00:00 0
|
||||
7f36d7dc6000-7f36d7dd3000 r--p 00000000 00:15 2147860 /usr/lib/libm-2.28.so
|
||||
7f36d7dd3000-7f36d7e74000 r-xp 0000d000 00:15 2147860 /usr/lib/libm-2.28.so
|
||||
7f36d7e74000-7f36d7f49000 r--p 000ae000 00:15 2147860 /usr/lib/libm-2.28.so
|
||||
7f36d7f49000-7f36d7f4a000 r--p 00182000 00:15 2147860 /usr/lib/libm-2.28.so
|
||||
7f36d7f4a000-7f36d7f4b000 rw-p 00183000 00:15 2147860 /usr/lib/libm-2.28.so
|
||||
7f36d7f4b000-7f36d8c24000 r-xp 00000000 00:15 1375639 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/server/libjvm.so
|
||||
7f36d8c24000-7f36d8e23000 ---p 00cd9000 00:15 1375639 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/server/libjvm.so
|
||||
7f36d8e23000-7f36d8efd000 rw-p 00cd8000 00:15 1375639 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/amd64/server/libjvm.so
|
||||
7f36d8efd000-7f36d8f4a000 rw-p 00000000 00:00 0
|
||||
7f36d8f4a000-7f36d8f6c000 r--p 00000000 00:15 2147845 /usr/lib/libc-2.28.so
|
||||
7f36d8f6c000-7f36d90b7000 r-xp 00022000 00:15 2147845 /usr/lib/libc-2.28.so
|
||||
7f36d90b7000-7f36d9103000 r--p 0016d000 00:15 2147845 /usr/lib/libc-2.28.so
|
||||
7f36d9103000-7f36d9104000 ---p 001b9000 00:15 2147845 /usr/lib/libc-2.28.so
|
||||
7f36d9104000-7f36d9108000 r--p 001b9000 00:15 2147845 /usr/lib/libc-2.28.so
|
||||
7f36d9108000-7f36d910a000 rw-p 001bd000 00:15 2147845 /usr/lib/libc-2.28.so
|
||||
7f36d910a000-7f36d910e000 rw-p 00000000 00:00 0
|
||||
7f36d910e000-7f36d910f000 r--p 00000000 00:15 2147854 /usr/lib/libdl-2.28.so
|
||||
7f36d910f000-7f36d9110000 r-xp 00001000 00:15 2147854 /usr/lib/libdl-2.28.so
|
||||
7f36d9110000-7f36d9111000 r--p 00002000 00:15 2147854 /usr/lib/libdl-2.28.so
|
||||
7f36d9111000-7f36d9112000 r--p 00002000 00:15 2147854 /usr/lib/libdl-2.28.so
|
||||
7f36d9112000-7f36d9113000 rw-p 00003000 00:15 2147854 /usr/lib/libdl-2.28.so
|
||||
7f36d9113000-7f36d9129000 r-xp 00000000 00:15 1375277 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/lib/amd64/jli/libjli.so
|
||||
7f36d9129000-7f36d9328000 ---p 00016000 00:15 1375277 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/lib/amd64/jli/libjli.so
|
||||
7f36d9328000-7f36d9329000 rw-p 00015000 00:15 1375277 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/lib/amd64/jli/libjli.so
|
||||
7f36d9329000-7f36d932f000 r--p 00000000 00:15 2147889 /usr/lib/libpthread-2.28.so
|
||||
7f36d932f000-7f36d933e000 r-xp 00006000 00:15 2147889 /usr/lib/libpthread-2.28.so
|
||||
7f36d933e000-7f36d9344000 r--p 00015000 00:15 2147889 /usr/lib/libpthread-2.28.so
|
||||
7f36d9344000-7f36d9345000 r--p 0001a000 00:15 2147889 /usr/lib/libpthread-2.28.so
|
||||
7f36d9345000-7f36d9346000 rw-p 0001b000 00:15 2147889 /usr/lib/libpthread-2.28.so
|
||||
7f36d9346000-7f36d934c000 rw-p 00000000 00:00 0
|
||||
7f36d934d000-7f36d934e000 r--s 00000000 00:15 1375376 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/management-agent.jar
|
||||
7f36d934e000-7f36d9350000 r--s 00007000 00:15 1375686 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jfxswt.jar
|
||||
7f36d9350000-7f36d9353000 r--s 0001a000 00:15 1375684 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jce.jar
|
||||
7f36d9353000-7f36d935c000 r--s 0006d000 00:15 1375379 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/javaws.jar
|
||||
7f36d935c000-7f36d9361000 r--s 002f9000 00:15 1375450 /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/charsets.jar
|
||||
7f36d9361000-7f36d9369000 rw-s 00000000 00:2d 1594683 /tmp/hsperfdata_joachim/28135
|
||||
7f36d9369000-7f36d936c000 r--p 00000000 00:15 2147882 /usr/lib/libnss_files-2.28.so
|
||||
7f36d936c000-7f36d9373000 r-xp 00003000 00:15 2147882 /usr/lib/libnss_files-2.28.so
|
||||
7f36d9373000-7f36d9376000 r--p 0000a000 00:15 2147882 /usr/lib/libnss_files-2.28.so
|
||||
7f36d9376000-7f36d9377000 r--p 0000c000 00:15 2147882 /usr/lib/libnss_files-2.28.so
|
||||
7f36d9377000-7f36d9378000 rw-p 0000d000 00:15 2147882 /usr/lib/libnss_files-2.28.so
|
||||
7f36d9378000-7f36d937f000 rw-p 00000000 00:00 0
|
||||
7f36d937f000-7f36d9380000 ---p 00000000 00:00 0
|
||||
7f36d9380000-7f36d9382000 r--p 00000000 00:15 2147834 /usr/lib/ld-2.28.so
|
||||
7f36d9382000-7f36d93a1000 r-xp 00002000 00:15 2147834 /usr/lib/ld-2.28.so
|
||||
7f36d93a1000-7f36d93a9000 r--p 00021000 00:15 2147834 /usr/lib/ld-2.28.so
|
||||
7f36d93a9000-7f36d93aa000 r--p 00028000 00:15 2147834 /usr/lib/ld-2.28.so
|
||||
7f36d93aa000-7f36d93ab000 rw-p 00029000 00:15 2147834 /usr/lib/ld-2.28.so
|
||||
7f36d93ab000-7f36d93ac000 rw-p 00000000 00:00 0
|
||||
7ffeb7f11000-7ffeb7f32000 rw-p 00000000 00:00 0 [stack]
|
||||
7ffeb7f4f000-7ffeb7f52000 r--p 00000000 00:00 0 [vvar]
|
||||
7ffeb7f52000-7ffeb7f54000 r-xp 00000000 00:00 0 [vdso]
|
||||
|
||||
VM Arguments:
|
||||
jvm_args: -javaagent:/opt/intellij-idea-ultimate-edition/lib/idea_rt.jar=33383:/opt/intellij-idea-ultimate-edition/bin -Dfile.encoding=UTF-8
|
||||
java_command: be.nielandt.CrossSolverKt
|
||||
java_class_path (initial): /home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/charsets.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/deploy.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/cldrdata.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/dnsns.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/jaccess.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/jfxrt.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/localedata.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/nashorn.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/sunec.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/sunjce_provider.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/sunpkcs11.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/ext/zipfs.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/javaws.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jce.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jfr.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jfxswt.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/jsse.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/management-agent.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/plugin.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/resources.jar:/home/joachim/.sdkman/candidates/java/8.0.171-oracle/jre/lib/rt.jar:/home/joachim/Documents/workspaces/idea/crubecross/target/classes:/home/joachim/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.2.61/kotlin-stdlib-1.2.61.jar:/home/joachim/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.61/kotlin-stdlib-common-1.2.61.jar:/home/joachim/.m2/repository/org/jetbrains/annotations/13.0/annotations-13.0.jar:/opt/intellij-idea-ultimate-edition/lib/idea_rt
|
||||
Launcher Type: SUN_STANDARD
|
||||
|
||||
Environment Variables:
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
|
||||
SHELL=/bin/bash
|
||||
DISPLAY=:0
|
||||
|
||||
Signal Handlers:
|
||||
SIGSEGV: [libjvm.so+0xad0890], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGBUS: [libjvm.so+0xad0890], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGFPE: [libjvm.so+0x928640], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGPIPE: [libjvm.so+0x928640], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGXFSZ: [libjvm.so+0x928640], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGILL: [libjvm.so+0x928640], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGUSR1: SIG_DFL, sa_mask[0]=00000000000000000000000000000000, sa_flags=none
|
||||
SIGUSR2: [libjvm.so+0x929ea0], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGHUP: [libjvm.so+0x92b2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGINT: [libjvm.so+0x92b2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGTERM: [libjvm.so+0x92b2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
SIGQUIT: [libjvm.so+0x92b2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO
|
||||
|
||||
|
||||
--------------- S Y S T E M ---------------
|
||||
|
||||
OS:NAME="Arch Linux"
|
||||
PRETTY_NAME="Arch Linux"
|
||||
ID=arch
|
||||
ID_LIKE=archlinux
|
||||
ANSI_COLOR="0;36"
|
||||
HOME_URL="https://www.archlinux.org/"
|
||||
SUPPORT_URL="https://bbs.archlinux.org/"
|
||||
BUG_REPORT_URL="https://bugs.archlinux.org/"
|
||||
|
||||
uname:Linux 4.16.8-1-ARCH #1 SMP PREEMPT Wed May 9 11:25:02 UTC 2018 x86_64
|
||||
libc:glibc 2.28 NPTL 2.28
|
||||
rlimit: STACK 8192k, CORE infinity, NPROC 31319, NOFILE 4096, AS infinity
|
||||
load average:2.97 1.16 0.84
|
||||
|
||||
/proc/meminfo:
|
||||
MemTotal: 8029856 kB
|
||||
MemFree: 144480 kB
|
||||
MemAvailable: 99380 kB
|
||||
Buffers: 12 kB
|
||||
Cached: 173012 kB
|
||||
SwapCached: 0 kB
|
||||
Active: 7407900 kB
|
||||
Inactive: 119516 kB
|
||||
Active(anon): 7369440 kB
|
||||
Inactive(anon): 35120 kB
|
||||
Active(file): 38460 kB
|
||||
Inactive(file): 84396 kB
|
||||
Unevictable: 48 kB
|
||||
Mlocked: 48 kB
|
||||
SwapTotal: 0 kB
|
||||
SwapFree: 0 kB
|
||||
Dirty: 4288 kB
|
||||
Writeback: 136 kB
|
||||
AnonPages: 7354636 kB
|
||||
Mapped: 106172 kB
|
||||
Shmem: 49972 kB
|
||||
Slab: 140472 kB
|
||||
SReclaimable: 57844 kB
|
||||
SUnreclaim: 82628 kB
|
||||
KernelStack: 15312 kB
|
||||
PageTables: 65144 kB
|
||||
NFS_Unstable: 0 kB
|
||||
Bounce: 0 kB
|
||||
WritebackTmp: 0 kB
|
||||
CommitLimit: 4014928 kB
|
||||
Committed_AS: 13987672 kB
|
||||
VmallocTotal: 34359738367 kB
|
||||
VmallocUsed: 0 kB
|
||||
VmallocChunk: 0 kB
|
||||
HardwareCorrupted: 0 kB
|
||||
AnonHugePages: 6144 kB
|
||||
ShmemHugePages: 0 kB
|
||||
ShmemPmdMapped: 0 kB
|
||||
HugePages_Total: 0
|
||||
HugePages_Free: 0
|
||||
HugePages_Rsvd: 0
|
||||
HugePages_Surp: 0
|
||||
Hugepagesize: 2048 kB
|
||||
Hugetlb: 0 kB
|
||||
DirectMap4k: 2478460 kB
|
||||
DirectMap2M: 5769216 kB
|
||||
|
||||
|
||||
CPU:total 4 (initial active 4) (2 cores per cpu, 2 threads per core) family 6 model 37 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, aes, clmul, ht, tsc, tscinvbit
|
||||
|
||||
/proc/cpuinfo:
|
||||
processor : 0
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 37
|
||||
model name : Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz
|
||||
stepping : 5
|
||||
microcode : 0x3
|
||||
cpu MHz : 1962.099
|
||||
cache size : 4096 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
apicid : 0
|
||||
initial apicid : 0
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 11
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm pti tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
|
||||
bugs : cpu_meltdown spectre_v1 spectre_v2
|
||||
bogomips : 5588.73
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 1
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 37
|
||||
model name : Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz
|
||||
stepping : 5
|
||||
microcode : 0x3
|
||||
cpu MHz : 1906.000
|
||||
cache size : 4096 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 2
|
||||
cpu cores : 2
|
||||
apicid : 4
|
||||
initial apicid : 4
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 11
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm pti tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
|
||||
bugs : cpu_meltdown spectre_v1 spectre_v2
|
||||
bogomips : 5588.73
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 2
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 37
|
||||
model name : Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz
|
||||
stepping : 5
|
||||
microcode : 0x3
|
||||
cpu MHz : 1529.816
|
||||
cache size : 4096 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 0
|
||||
cpu cores : 2
|
||||
apicid : 1
|
||||
initial apicid : 1
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 11
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm pti tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
|
||||
bugs : cpu_meltdown spectre_v1 spectre_v2
|
||||
bogomips : 5588.73
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
processor : 3
|
||||
vendor_id : GenuineIntel
|
||||
cpu family : 6
|
||||
model : 37
|
||||
model name : Intel(R) Core(TM) i7 CPU M 640 @ 2.80GHz
|
||||
stepping : 5
|
||||
microcode : 0x3
|
||||
cpu MHz : 2350.350
|
||||
cache size : 4096 KB
|
||||
physical id : 0
|
||||
siblings : 4
|
||||
core id : 2
|
||||
cpu cores : 2
|
||||
apicid : 5
|
||||
initial apicid : 5
|
||||
fpu : yes
|
||||
fpu_exception : yes
|
||||
cpuid level : 11
|
||||
wp : yes
|
||||
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt aes lahf_lm pti tpr_shadow vnmi flexpriority ept vpid dtherm ida arat
|
||||
bugs : cpu_meltdown spectre_v1 spectre_v2
|
||||
bogomips : 5588.73
|
||||
clflush size : 64
|
||||
cache_alignment : 64
|
||||
address sizes : 36 bits physical, 48 bits virtual
|
||||
power management:
|
||||
|
||||
|
||||
|
||||
Memory: 4k page, physical 8029856k(144480k free), swap 0k(0k free)
|
||||
|
||||
vm_info: Java HotSpot(TM) 64-Bit Server VM (25.171-b11) for linux-amd64 JRE (1.8.0_171-b11), built on Mar 28 2018 17:07:08 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)
|
||||
|
||||
time: Sun Aug 26 22:41:23 2018
|
||||
elapsed time: 12 seconds (0d 0h 0m 12s)
|
||||
|
||||
@ -75,12 +75,12 @@ fun main(args: Array<String>) {
|
||||
val usedModel = EdgeModel(moves)
|
||||
println(usedModel)
|
||||
|
||||
// val baseSolve = CrossSolverBase().solveCrossesTimed(scrambledModel)
|
||||
// val baseSolve = CrossSolverBase().solveCrossesTimed(usedModel)
|
||||
// CrossSolver.printResults(baseSolve)
|
||||
|
||||
val upgradedSolve = CrossSolverUpgraded().solveCrossesTimed(usedModel)
|
||||
CrossSolver.printResults(upgradedSolve)
|
||||
|
||||
//
|
||||
val upgradedSolveSkip = CrossSolverUpgradedSkip().solveCrossesTimed(usedModel)
|
||||
CrossSolver.printResults(upgradedSolveSkip)
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package be.nielandt
|
||||
|
||||
import be.nielandt.counter.CounterBasic
|
||||
import be.nielandt.counter.CounterTieredFactory
|
||||
|
||||
class CrossSolverBase : CrossSolver() {
|
||||
/**
|
||||
@ -12,7 +13,7 @@ class CrossSolverBase : CrossSolver() {
|
||||
for (moveCount in 1..8) {
|
||||
// build a counter of moveCount big
|
||||
println("allCrossMoveCount basic doing $moveCount")
|
||||
val counter = CounterBasic(moveCount)
|
||||
val counter = CounterTieredFactory.create(moveCount)
|
||||
|
||||
// count up, each state of the counter corresponds to a combination of moves
|
||||
do {
|
||||
|
||||
@ -48,12 +48,16 @@ fun decodeMove(i: Int): String {
|
||||
L2 -> "L2"
|
||||
R2 -> "R2"
|
||||
else -> {
|
||||
println("i = ${i}")
|
||||
println("i = $i")
|
||||
throw IllegalArgumentException()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun classOf(move: Int): Int {
|
||||
return (move%6) / 2
|
||||
}
|
||||
|
||||
fun parseMoves(s: String): List<Int> {
|
||||
return s.split(" ", ",", ";").filter { it?.length > 0 }.map { parseMove(it) }.toList()
|
||||
}
|
||||
|
||||
@ -1,5 +1,9 @@
|
||||
package be.nielandt.counter
|
||||
|
||||
import be.nielandt.decodeMove
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
|
||||
/**
|
||||
* Counter for X digits of a given base.
|
||||
*/
|
||||
@ -14,7 +18,7 @@ open abstract class Counter(size: Int, val base: Int = 18) {
|
||||
* The last (highest significance) index that overflowed and has been changed in the counter. Could be null, if it never overflowed.
|
||||
* Start with saying that everything changed.
|
||||
*/
|
||||
var lastModifiedIndex: Int = 0
|
||||
var lastModifiedIndex: Int = 0
|
||||
|
||||
/**
|
||||
* Increase the counter one step. True if it succeeded and a new value is there, false if we've reached the end.
|
||||
@ -40,9 +44,31 @@ open abstract class Counter(size: Int, val base: Int = 18) {
|
||||
/**
|
||||
* Have we reached the maximum value?
|
||||
*/
|
||||
fun atMax(): Boolean {
|
||||
return counter.all {
|
||||
open fun atMax(): Boolean {
|
||||
return counter.any { it >= base } || counter.all {
|
||||
it == this.base - 1
|
||||
}
|
||||
}
|
||||
|
||||
fun toStringMove(): String {
|
||||
return counter.joinToString(", ") { decodeMove(it) }
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val size = 7
|
||||
// make a counter and see how many iterations it did
|
||||
testCounter(CounterBasic(size))
|
||||
testCounter(CounterSkip(size))
|
||||
testCounter(CounterBuffer(size))
|
||||
}
|
||||
|
||||
private fun testCounter(c: Counter) {
|
||||
var l: Long = 0
|
||||
val now = Instant.now()
|
||||
while (c.increase()) {
|
||||
l++
|
||||
}
|
||||
val seconds = Duration.between(now, Instant.now()).seconds
|
||||
println("${c.javaClass} l = ${l.toDouble()/1_000_000}m ${seconds}s")
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
package be.nielandt.counter
|
||||
|
||||
import java.util.*
|
||||
import be.nielandt.classOf
|
||||
|
||||
/**
|
||||
* Counter for X digits of a given base. Skips situations where faces are the same.
|
||||
@ -28,11 +28,36 @@ class CounterBasic(size: Int) : Counter(size, 18) {
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val counterSkip = CounterSkip(4)
|
||||
while (counterSkip.increase()) {
|
||||
println("counterSkip.counter = ${Arrays.toString(counterSkip.counter)}")
|
||||
fun isValid(): Boolean {
|
||||
return !hasSeries() && !hasConsecutiveFaces()
|
||||
}
|
||||
}
|
||||
|
||||
private fun hasConsecutiveFaces(): Boolean {
|
||||
for(i in 1 until counter.size) {
|
||||
if(counter[i]%6 == counter[i-1]%6)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
private fun hasSeries(): Boolean {
|
||||
var currentClass = classOf(counter.last())
|
||||
var length = 1
|
||||
for(i in 1 until counter.size) {
|
||||
if(classOf(counter[i])==currentClass) {
|
||||
length++
|
||||
} else {
|
||||
// we hit the end, if the length exceeds 3, return the last index that matched the series
|
||||
if(length>=3) {
|
||||
return true
|
||||
}
|
||||
length = 1
|
||||
currentClass = classOf(counter[i])
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
149
src/main/kotlin/be/nielandt/counter/CounterBuffer.kt
Normal file
149
src/main/kotlin/be/nielandt/counter/CounterBuffer.kt
Normal file
@ -0,0 +1,149 @@
|
||||
package be.nielandt.counter
|
||||
|
||||
import be.nielandt.classOf
|
||||
|
||||
/**
|
||||
* Counter for X digits of a given base. Skips situations where faces are the same.
|
||||
*/
|
||||
class CounterBuffer(size: Int) : Counter(size, 18) {
|
||||
|
||||
val buffer = mutableListOf<Array<Int>>()
|
||||
|
||||
init {
|
||||
// initialise the buffer of valid counters
|
||||
val counterBasic = CounterBasic(size)
|
||||
do {
|
||||
if (counterBasic.isValid()) {
|
||||
buffer.add(counterBasic.counter)
|
||||
}
|
||||
} while (counterBasic.increase())
|
||||
println("Init of counter buffer, ${buffer.size} valid combos")
|
||||
}
|
||||
|
||||
// /**
|
||||
// * Increase the counter.
|
||||
// *
|
||||
// * @return true if the increase happened, false if we hit the ceiling.
|
||||
// */
|
||||
// override fun increase(): Boolean {
|
||||
// var lmi = lastModifiedIndex
|
||||
// var last = super.increase()
|
||||
// lmi = min(lastModifiedIndex, lmi)
|
||||
// // are we having an invalid situation? this would be two consecutive moves on the same face
|
||||
// while (
|
||||
// (containsConsecutiveSameFaceMoves() && !atMax()) ||
|
||||
// (this.counter?.size > 1 && !atMax() && containsPalindrome())) {
|
||||
// last = super.increase()
|
||||
// lmi = min(lastModifiedIndex, lmi)
|
||||
// }
|
||||
// // we have to set the lastmodified index to the lowest point that it got to... otherwise we might be skipping some cases
|
||||
// this.lastModifiedIndex = lmi
|
||||
// return last
|
||||
// }
|
||||
|
||||
override fun increase(): Boolean {
|
||||
var increasing = true
|
||||
// while we're increasing, start from scratch (from back to front)
|
||||
while (increasing) {
|
||||
// do old school counter increase, with overflow
|
||||
for (i in this.counter.size - 1 downTo 0) {
|
||||
// increase the current digit by 1
|
||||
this.counter[i]++
|
||||
// keep track of the last modified index!
|
||||
this.lastModifiedIndex = i
|
||||
|
||||
// if we've hit the maximum value on the first digit, return false
|
||||
if (this.counter[i] == base && i == 0)
|
||||
return false
|
||||
|
||||
// have we overflowed?
|
||||
if (this.counter[i] == base) {
|
||||
this.counter[i] = 0
|
||||
} else {
|
||||
// we didn't overflow, so we have increase and we can stop the regular increase
|
||||
break
|
||||
}
|
||||
}
|
||||
// old school increment has completed... can we speed up the process somehow?
|
||||
val lastSeriesStart = findLastSeries()
|
||||
if (lastSeriesStart != -1) {
|
||||
// floor the rest of the counter with sane values, starting from lastSeriesStart+2 (chop off the third value)
|
||||
floorCounterWithSaneValues(lastSeriesStart + 2)
|
||||
} else {
|
||||
// didn't do anything crazy, stop the increase
|
||||
increasing = false
|
||||
}
|
||||
}
|
||||
return !atMax()
|
||||
}
|
||||
|
||||
/**
|
||||
* If you have X X A B C D X X you can potentially
|
||||
*/
|
||||
private fun floorCounterWithSaneValues(firstIndexToChange: Int) {
|
||||
// the class of the item to change
|
||||
val currentClass = classOf(counter[firstIndexToChange])
|
||||
// each item
|
||||
for (i in firstIndexToChange until counter.size) {
|
||||
// this value is the lowest valid move available.
|
||||
// 1. cannot lengthen a series,
|
||||
|
||||
// 2. cannot be the same face as the previous value
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find the last series in the counter, if it's there. -1 if not found, index of the start of the series if found.
|
||||
*/
|
||||
private fun findLastSeries(): Int {
|
||||
var currentClass = classOf(counter.last())
|
||||
var length = 1
|
||||
for (i in counter.size - 2 downTo 0) {
|
||||
if (classOf(counter[i]) == currentClass) {
|
||||
length++
|
||||
} else {
|
||||
// we hit the end, if the length exceeds 3, return the last index that matched the series
|
||||
if (length >= 3) {
|
||||
return i + 1
|
||||
}
|
||||
length = 1
|
||||
currentClass = classOf(counter[i])
|
||||
}
|
||||
}
|
||||
// we processed everything, perhaps there's a series waiting, starting at index 0?
|
||||
if (length >= 3)
|
||||
return 0
|
||||
// nothing found
|
||||
return -1
|
||||
}
|
||||
|
||||
private fun goBackAndFindClassSeries(startIndex: Int): Boolean {
|
||||
// if we don't have 3+ elements before startindex, just ignore this step
|
||||
if (startIndex < 2)
|
||||
return false
|
||||
val theClass = classOf(this.counter[startIndex])
|
||||
val c1 = classOf(this.counter[startIndex - 1])
|
||||
val c2 = classOf(this.counter[startIndex - 2])
|
||||
return theClass == c1 && c1 == c2
|
||||
}
|
||||
|
||||
/**
|
||||
* Are there two moves in the current counter / chain that act on the same face? This would be F+F2 for example.
|
||||
*/
|
||||
private fun containsConsecutiveSameFaceMoves(): Boolean {
|
||||
for (i in 1 until this.counter.size) {
|
||||
// perhaps is a speedup
|
||||
if (this.counter[i] % 6 == this.counter[i - 1] % 6)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val counterSkip = CounterBuffer(7)
|
||||
println(counterSkip)
|
||||
}
|
||||
@ -36,7 +36,7 @@ class CounterSkip(size: Int) : Counter(size, 18) {
|
||||
this.counter[i]++
|
||||
|
||||
// if we've hit the maximum value on the first digit, return false
|
||||
if(this.counter[i]==base && i == 0)
|
||||
if (this.counter[i] == base && i == 0)
|
||||
return false
|
||||
|
||||
this.lastModifiedIndex = i
|
||||
|
||||
145
src/main/kotlin/be/nielandt/counter/CounterTiered.kt
Normal file
145
src/main/kotlin/be/nielandt/counter/CounterTiered.kt
Normal file
@ -0,0 +1,145 @@
|
||||
package be.nielandt.counter
|
||||
|
||||
import be.nielandt.decodeMove
|
||||
|
||||
/**
|
||||
* Try a multi-tier counter.
|
||||
* 1) tier1 : axes / move classes (FB/UD/RL) -> three classes, but multiple sizes (1 or 2) possible
|
||||
* 2) tier2: each block of class (22, 11, 2, 11, 0, ...) needs to be expanded into the full range of related moves
|
||||
*/
|
||||
class CounterTiered : Counter(8) {
|
||||
|
||||
private val moveIterator: Iterator<Array<Int>> = listOf<Array<Int>>().iterator()
|
||||
|
||||
override fun increase(): Boolean {
|
||||
if (!this.moveIterator.hasNext())
|
||||
return false
|
||||
this.counter = this.moveIterator.next()
|
||||
return true
|
||||
}
|
||||
|
||||
override fun atMax(): Boolean {
|
||||
return !this.moveIterator.hasNext()
|
||||
}
|
||||
|
||||
private class MoveIterator(val classes: List<List<Int>>) : Iterator<Array<Int>> {
|
||||
|
||||
var currentClassIndex = 0
|
||||
lateinit var currentMoves: Iterator<Array<Int>>
|
||||
|
||||
|
||||
init {
|
||||
// set up the first class
|
||||
doClass(currentClassIndex)
|
||||
}
|
||||
|
||||
private fun doClass(index: Int) {
|
||||
val fillIn = fillIn(0, classes[index], Array(classes.size) { 0 })
|
||||
currentMoves = fillIn.toList().iterator()
|
||||
}
|
||||
|
||||
override fun next(): Array<Int> {
|
||||
val next = currentMoves.next()
|
||||
if (!currentMoves.hasNext()) {
|
||||
nextClass()
|
||||
}
|
||||
return next
|
||||
}
|
||||
|
||||
private fun nextClass() {
|
||||
if (currentClassIndex < classes.size) {
|
||||
currentClassIndex++
|
||||
doClass(currentClassIndex)
|
||||
}
|
||||
}
|
||||
|
||||
override fun hasNext(): Boolean {
|
||||
return currentClassIndex < classes.size && currentMoves.hasNext()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class CounterTieredFactory {
|
||||
companion object {
|
||||
fun create(size: Int): CounterTiered {
|
||||
return CounterTiered()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Expand the class ints into the full range of moves.
|
||||
*
|
||||
* class 0: 0,1,6,7,12,13
|
||||
* class 1: 2,3,8,9,14,15
|
||||
*
|
||||
const val F = 0
|
||||
const val B = 1
|
||||
const val U = 2
|
||||
const val D = 3
|
||||
const val L = 4
|
||||
const val R = 5
|
||||
|
||||
const val F_ = 6
|
||||
const val B_ = 7
|
||||
const val U_ = 8
|
||||
const val D_ = 9
|
||||
const val L_ = 10
|
||||
const val R_ = 11
|
||||
|
||||
const val F2 = 12
|
||||
const val B2 = 13
|
||||
const val U2 = 14
|
||||
const val D2 = 15
|
||||
const val L2 = 16
|
||||
const val R2 = 17
|
||||
*/
|
||||
fun fillIn(index: Int, classes: List<Int>, moveList: Array<Int>): List<Array<Int>> {
|
||||
val result = mutableListOf<Array<Int>>()
|
||||
|
||||
// if the movelist is complete, finish it
|
||||
if (index == classes.size) {
|
||||
return listOf(moveList)
|
||||
}
|
||||
|
||||
// if index == 0, all possible moves are here
|
||||
if (index == 0 || classes[index] != classes[index - 1]) {
|
||||
(0..1).forEach { plus ->
|
||||
val move = (classes[index] * 2) + plus
|
||||
(0..12 step 6).forEach { extra ->
|
||||
val decodeMove = decodeMove(move + extra)
|
||||
val copyOf = moveList.copyOf()
|
||||
copyOf[index] = move + extra
|
||||
result.addAll(fillIn(index + 1, classes, copyOf))
|
||||
}
|
||||
}
|
||||
}
|
||||
// if we're doing a repeat of the same class
|
||||
else if (classes[index] == classes[index - 1]) {
|
||||
// we're considering exactly the same class as the move before... watch it! can't add a move on the same face
|
||||
// what's the face of the previous one?
|
||||
val face = moveList[index - 1] % 6
|
||||
// now set the new move to be anything but a move of that face
|
||||
val newFace = if (face % 2 == 0) {
|
||||
// the other face should be the uneven one -> add one to the values
|
||||
face + 1
|
||||
} else {
|
||||
// subtract one from the values
|
||||
face - 1
|
||||
}
|
||||
// now add the three possible moves that remain to us
|
||||
(0..12 step 6).map { it + newFace }.forEach { move ->
|
||||
val copyOf = moveList.copyOf()
|
||||
copyOf[index] = move
|
||||
result.addAll(fillIn(index + 1, classes, copyOf))
|
||||
}
|
||||
} else {
|
||||
throw IllegalStateException()
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
55
src/main/kotlin/be/nielandt/counter/VariableCounter.kt
Normal file
55
src/main/kotlin/be/nielandt/counter/VariableCounter.kt
Normal file
@ -0,0 +1,55 @@
|
||||
package be.nielandt.counter
|
||||
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* The variable counter has irregular base size for each digit.
|
||||
*
|
||||
* basesize: [1,2,1]
|
||||
* iterates:
|
||||
* - [0,0,0]
|
||||
* - [0,0,1]
|
||||
* - [0,1,0]
|
||||
* - [0,1,1]
|
||||
* - [0,2,0]
|
||||
* - ...
|
||||
*/
|
||||
class VariableCounter(internal val baseSizes: IntArray) : Iterator<IntArray> {
|
||||
|
||||
// init the counter with 0's, we only have a maximum as our basesize
|
||||
val counter = IntArray(baseSizes.size) {
|
||||
when (it) {
|
||||
baseSizes.size - 1 -> -1
|
||||
else -> 0
|
||||
}
|
||||
}
|
||||
|
||||
override fun hasNext(): Boolean {
|
||||
// check if all elements in the counter has reached their maximum (basesize - 1)
|
||||
counter.forEachIndexed { index, sh ->
|
||||
if (sh < baseSizes[index] - 1)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun next(): IntArray {
|
||||
for (i in this.counter.size - 1 downTo 0) {
|
||||
this.counter[i]++
|
||||
if (this.counter[i] == baseSizes[i]) {
|
||||
this.counter[i] = 0
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
return counter.copyOf()
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val counter = VariableCounter(intArrayOf(2, 3, 2))
|
||||
while (counter.hasNext()) {
|
||||
val next = counter.next()
|
||||
println("counter.next() = ${Arrays.toString(next)} ${counter.hasNext()}")
|
||||
}
|
||||
}
|
||||
70
src/main/kotlin/be/nielandt/iterator/ValidClassesIterator.kt
Normal file
70
src/main/kotlin/be/nielandt/iterator/ValidClassesIterator.kt
Normal file
@ -0,0 +1,70 @@
|
||||
package be.nielandt.iterator
|
||||
|
||||
import java.time.Duration
|
||||
import java.time.Instant
|
||||
|
||||
class ValidClassesIterator(val size: Int) : Iterator<List<Int>> {
|
||||
|
||||
private var classes: Iterator<List<Int>> = classIterator().iterator()
|
||||
|
||||
override fun hasNext(): Boolean {
|
||||
return this.classes.hasNext()
|
||||
}
|
||||
|
||||
override fun next(): List<Int> {
|
||||
return this.classes.next()
|
||||
}
|
||||
|
||||
/**
|
||||
* These are the classes (FB/UD/RL), correctly configured (no illegal combinations here)
|
||||
*/
|
||||
private fun classIterator(): List<List<Int>> {
|
||||
val classes = appendRandomClass(size, listOf())
|
||||
return classes
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for classIterator()
|
||||
*/
|
||||
private fun appendRandomClass(size: Int, base: List<Int>): List<List<Int>> {
|
||||
val result = mutableListOf<List<Int>>()
|
||||
when {
|
||||
base.size < size - 1 -> // add all classes, but don't repeat a group already there
|
||||
(0..2).filter { if (base.isNotEmpty()) it != base.last() else true }
|
||||
.forEach { theClass ->
|
||||
// and both amounts, 1+2
|
||||
(1..2).forEach { amount ->
|
||||
val l = base.toMutableList()
|
||||
for (i in 1..amount) {
|
||||
l.add(theClass)
|
||||
}
|
||||
result.addAll(appendRandomClass(size, l))
|
||||
}
|
||||
}
|
||||
base.size == size -> {
|
||||
// we're done here
|
||||
result.add(base)
|
||||
}
|
||||
base.size == size - 1 -> // the base is not empty, only add class that is not at the end of the base list
|
||||
(0..2).filter { if (base.isEmpty()) true else it != base.last() }.forEach { theClass ->
|
||||
val l = base.toMutableList()
|
||||
l.add(theClass)
|
||||
result.add(l)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val now = Instant.now()
|
||||
val iter = ValidClassesIterator(8)
|
||||
var count: Int = 0
|
||||
while(iter.hasNext()) {
|
||||
println("iter.next() = ${iter.next()}")
|
||||
count++
|
||||
}
|
||||
println("count = ${count}")
|
||||
println("Duration.between(Instant.now(), now) = ${Duration.between(now, Instant.now()).toMillis()}")
|
||||
}
|
||||
|
||||
83
src/main/kotlin/be/nielandt/iterator/ValidMoveIterator.kt
Normal file
83
src/main/kotlin/be/nielandt/iterator/ValidMoveIterator.kt
Normal file
@ -0,0 +1,83 @@
|
||||
package be.nielandt.iterator
|
||||
|
||||
import be.nielandt.counter.VariableCounter
|
||||
import be.nielandt.decodeMove
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* Iterates over the different moves of the given specific classes.
|
||||
*/
|
||||
class ValidMoveIterator(val classes: List<Int>) : Iterator<IntArray> {
|
||||
|
||||
internal var expansionCounter: VariableCounter
|
||||
|
||||
/**
|
||||
* At initialisation time, create the internal expansion counter. This one will count appropriately for each class type,
|
||||
* depending on whether the class is alone or is a duplicate.
|
||||
*/
|
||||
init {
|
||||
// create the variable counter: if a class is 'alone', it can iterate over all 6 values. otherwise, each part can iterate over 3
|
||||
val intArray = IntArray(classes.size)
|
||||
var i = 0
|
||||
while (i < classes.size - 1) {
|
||||
if (i < classes.size - 1 && classes[i] == classes[i + 1]) {
|
||||
intArray[i] = 3
|
||||
intArray[i + 1] = 3
|
||||
i += 2
|
||||
} else {
|
||||
intArray[i] = 6
|
||||
i++
|
||||
}
|
||||
}
|
||||
this.expansionCounter = VariableCounter(intArray)
|
||||
}
|
||||
|
||||
override fun hasNext(): Boolean = this.expansionCounter.hasNext()
|
||||
|
||||
override fun next(): IntArray {
|
||||
val next = this.expansionCounter.next()
|
||||
println("Expansioncounter next = ${Arrays.toString(next)}")
|
||||
// translate this state into a list of moves
|
||||
var i = 0
|
||||
while (i < next.size) {
|
||||
// process the double situation
|
||||
if (classes[i] == classes[i + 1]) {
|
||||
// so, we're in the same state, the first counter will get the 'low' value, the second the 'high' value
|
||||
// for class FB, that would be F and B respectively
|
||||
// class 0 (FB) has to expand to 0,6,12 (F,F_F2) and 1,7,13 (B,B_,B2) respectively
|
||||
// class 1 (UD) has to expand to 2,8,14 (U,U_U2) and 3,9,15 (D,D_,D2) respectively
|
||||
// class 2 (LR) has to expand to 4,10,16 (L,L_L2) and 5,11,17 (R,R_,R2) respectively
|
||||
// next will contain 0,1,3, as the classes are a pair
|
||||
val c1 = (classes[i] * 2) + 6 * next[i]
|
||||
val c2 = (classes[i] * 2) + 6 * next[i + 1]
|
||||
next[i] = c1
|
||||
next[i + 1] = c2
|
||||
|
||||
// bump up the counter by two
|
||||
i += 2
|
||||
}
|
||||
// now the single situation
|
||||
else {
|
||||
// class 0 (FB) has to expand to 0,1,6,7,12,13 (F,B,F_,B_,F2,B2)
|
||||
// class 1 (UD) has to expand to 2,3,8,9,14,15 (U,D,U_,D_,U2,D2)
|
||||
// class 2 (LR) has to expand to 4,5,10,11,16,17 (L,R,L_,R_,L2,R2)
|
||||
next[i] = (classes[i] * 2) + ((next[i] / 2) * 6) + (next[i] % 2)
|
||||
i++
|
||||
}
|
||||
}
|
||||
return next
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val validMoveIterator = ValidMoveIterator(listOf(0, 0, 2, 1, 2, 0, 1, 1))
|
||||
println("classes = ${validMoveIterator.classes}")
|
||||
println("basesizes = ${Arrays.toString(validMoveIterator.expansionCounter.baseSizes)}")
|
||||
var count = 0
|
||||
while (validMoveIterator.hasNext()) {
|
||||
println("Arrays.toString(validMoveIterator.next()) = ${Arrays.toString(validMoveIterator.next())}")
|
||||
println("validMoveIterator = ${validMoveIterator.next().map { decodeMove(it) }}")
|
||||
count++
|
||||
}
|
||||
println("count = $count")
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user